OC(三)数组

作者: 社会主义顶梁鹿 | 来源:发表于2018-07-29 16:39 被阅读0次

数组:按照顺序排列的元素的集体

 数组取值:数组是通过下标(索引)去取值

 NSArray(数组类名) 数组 在OC里面允许数组里面存在放不同类型的元素,在取值的时候,一定要注意数组类型,尽量存相同类型的数据

#import 

//#import 是导入整个《声明文件》,可以使用里面所有内容

//@class 提示类名,只可以使用类名,并未使用类里面的内容

int main(int argc, const char * argv[]) {

 @autoreleasepool {

在数组里面存储的都是NSObject数据

NSArray *list=@[@"11",@"22",@"33"];

基本数据类型 存到数组

NSNumber把数字类型的变量包成NSObject类型

数字转 NSNumber?

把咱们数字到数组的时候,不可以直接存放非NSObject类型的数据

可以把数字转换成NSNumber

int a=100;

NSNumber *num=[[NSNumber alloc]initWithInt:a];

NSNumber *num=[NSNumber numberWithInt:a];

转NSNumber类型的缩写@(要转的数据)

NSArray *list1=@[@(a),@(0.55)];

NSNumber *num1=list1[0];

int num0=[list1[0] intValue];

 #pragma ----------初始化数组--------

1、初始化方式1--直接赋值 @[元素,元素]

在OC里面允许数组里面存在放object类型的元素

NSArray *array = @[@"字符串",65,p];

字符串只是一段文字,禁止将对象当做字符串来存。👌

2、初始化方式2

NSArray *list = [[NSArray alloc]init];

初始化一个空数组是有意义的,oc中数组允许直接赋值

3、初始化方式3

NSArray *list = [NSArray array];

4、初始化并赋值

(1)初始化只有一个元素的数组

NSArray *list = [NSArray arrayWithObject:@"..."];

(2)初始化多个元素的数组

NSArray *list = [NSArray arrayWithObjects:@"",@"", nil];

注意事项:nil不可以省略 最后一个元素的逗号不可以省略

最常用的初始化方式:**

NSArray *list = @[@"",@""];

NSArray *list = [NSArray array];空数组

 #pragma ----------数组取值--------

数组取值:下标(索引)取值,下标是从0开始的

NSArray *list = @[@"八戒",@"悟空",@"和尚",@"宝宝",@"旺旺"];

取值:数组名[下标];

#pragma ----------数组遍历----------

数组遍历.1

获得数组元素个数的属性: count

使用方法:数组名.count

for (int i=0; i

NSString *s = list[i];

NSLog(@"%@",s);

}

数组遍历.2 快速遍历

for (元素类名 *对象名(所取元素) in 数组名) {

NSLog(@"%@",所取元素);

}

for (NSString *s in list) {

NSLog(@"%@",s);

}

NSArray *list = @[@"lucy",@"lily",@"lilei",@"hanmeimei"];

NSLog(@"%@",list);

/*打印出来的结果

数组元素是用逗号隔开的

(

lucy,

lily,

lilei,

hanmeimei

)*/

NSArray *list = @[@"lucy",@"lily",@"lilei",@"hanmeimei"];

通过方法取值  objectAtIndex

(1) NSString *s = [list objectAtIndex:0];

倒着遍历 先了解一下

int num = [@(list.count)intValue];

for (int i=num; i>=0; i--) {

}

(1)(2)两种方法完全等价,一旧一新罢了

(2)for (int i=0; i

NSLog(@"%@",[list objectAtIndex:i]);

}

#pragma字符串里面可以通过符号截取字符串变成数组

以字符串某个元素为分界点将之变成数组,将这个元素过滤,注意区分中英文符号(所占字节数是不一样的)

NSString *content = @"葫芦娃,小明,老王,大黄";

NSArray *list = [content componentsSeparatedByString:@","];

for (NSString *s in list) {

NSLog(@"%@",s);

}

#pragma -------数组变成字符串----------

NSArray *list = @[@"小明",@"小红",@"小萌"];

componentsJoinedByString的意思:加入一个字符串使之返回一个字符串

NSString *s = [list componentsJoinedByString:@""];

NSLog(@"%@",s);

直接把数组格式化字符串,数组会保持原始状态

NSString *s = [NSString stringWithFormat:@"%@",list];

NSLog(@"%@",s);

#pragma ---可变数组 NSMutableArray-------

注意!:不可以直接给可变数组赋值*******

NSMutableArray *list = @[];❌

NSArray *arr = @[@"",@""];

NSMutableArray *list = [NSMutableArray arrayWithArray:arr];

NSString *s1 = @"";

NSString *s2 = @"";

NSMutableString *s = [NSMutableString stringWithFormat:@"%@%@",s1,s2];

不可变数组里面所有的方法,可变数组都可以使用

NSMutableArray *list = [NSMutableArray arrayWithObjects:@"",@"", nil];

#pragma ----可变数组的增删改查----------

NSMutableArray *list = [NSMutableArray array];

#pragma -----1.添加元素-----

Hero *hero = [[Hero alloc]init];

给英雄赋值...

添加一个object类型的元素

[list addObject:hero];

再添加..

[list addObject:hero];

NSLog(@"%lu",list.count);

如果添加10个...就用for循环,

alloc init 会创建一个对象,出现一次就会创建一个对象

for (int i=0; i<10; i++) {

Hero *hero = [[Hero alloc]init];

[list addObject:hero];

}

#pragma -----2.删除元素-----

NSMutableArray *list = [NSMutableArray arrayWithObjects:@"lucy",@"mike",@"tom",nil];

删除指定元素

可以通过下标来删除

 (1)[list removeObjectAtIndex:1];

 (2) NSRange range = {0,2};

[list removeObjectsInRange:range];

NSLog(@"%@",list);

移除最后一个元素

[list removeLastObject];

移除全部内容

[list removeAllObjects];

#pragma -----3.替换-----

[list replaceObjectAtIndex:1withObject:@"hanyang"];

#pragma -----4.查找-----

//1.通过下标,查找元素所在位置

list[0];

//2.通过元素,查找元素所在位置

NSString *name = @"tom";

NSUInteger i = [list indexOfObject:name];

NSLog(@"%lu",(unsigned long)i);

------------------------------回顾以上------------------------------

 1、不可变数组

 数组的初始化

 (1)NSArray *list = @[@"",@""];

 (2)NSArray *list = [[NSArray alloc]init];

 (3)NSArray *list = [NSArray array];

 初始化并赋值

 (1)只赋一个值NSArray *list = [NSArray arrayWithObject:@""];

 (2)初始化 并赋多个值 NSArray *list = [NSArray arrayWithObjects:@"",@"", nil];

 注意:最后一个元素的逗号 和 nil 不能省略

 数组取值

 (1)list[0];

 (2)[list objectAtIndex:0];

 快速遍历

 for (元素 in 数组) {

 }

 数组转字符串

 (1)直接格式化[NSString stringWithFormat:@"%@",list];

 (2)加入一个字符串去分割数组 [list componentsJoinedByString:@""];

 把字符串转成数组

 通过一个标记 把字符串分割成数组

 NSString *ss =@"qqqq11www11eee";

 [ss componentsSeparatedByString:@"11"];

 可变数组

 增删改查

 (1)添加[list addObject:@""];

 (2)直接删除一个元素:[list removeObject:@""];

 通过下标删除元素:[list removeObjectAtIndex:0];

 删除最后一个元素:[list removeLastObject];

 删除全部元素:[list removeAllObjects];

 替换元素:

 通过下标 替换下标对应的元素:[list replaceObjectAtIndex:0 withObject:@""];

 查找元素:

 (1)通过下标:list[0];

 (2)通过内容查找:[list indexOfObject:@""];

相关文章

  • OC(三)数组

    数组:按照顺序排列的元素的集体 数组取值:数组是通过下标(索引)去取值 NSArray(数组类名)数组 在OC里面...

  • swift版indexOfObject()

    先转成OC的数组,OC数组提供indexOfObject(object),let tempItems =self....

  • Objective-C 学习笔记 - 数组与可变数组

    【前言】 OC中使用两种数组,第一种是OC数组,第二种是C语言的数组,使用OC数组存放对象类型,使用C语言数组存放...

  • Foundation框架---数组

    OC 数组特点: 可以存储不同类型的对象,oc的数组 只能存储对象 数组可以遍历,占用的内存空间是连续的. oc中...

  • iOS 中NSArray

    //OC 的数组 可以存储不同类型的对象 ,OC 的数组只能存储对象 //不可变数组 NSArray *array...

  • oc 基础--NSArray

    // oc 的数组可以存储不同类型的对象// oc 的数组只能存储对象 NSNumber NSValue

  • 可变数组和不可变数组

    OC 的数组 可以存储不同类型的对象 ,OC 的数组只能存储对象 NSArray 1.快速创建数组 2.根据已有...

  • Objective-C day5 集合(17-07-31)

    OC中的集合包括:数组类 字典类 集合类##数组:1.数组是一个有序的集合,OC中的数组只能存储对象类型,但是...

  • swift基础-4-数组

    数组定义:OC:有值数组 空数组 不可变数组:NSArray可变数组:NSMutableArray swift:有...

  • 《Objective-C高级编程 iOS与OS X多线程与内存管

    内存管理篇: 6.不要使用静态和动态数组(非OC集合对象) 静态数组(类似于c数组,非OC的集合对象): 使用__...

网友评论

    本文标题:OC(三)数组

    本文链接:https://www.haomeiwen.com/subject/qkxtvftx.html