Objective-C的数组和许多其他的编程语言都不太一样,Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同类型的对象。但是缺点是只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成OC对象才能加入数组。
1.NSArray
NSArray是不可变的数组,一旦初始化完成就不能对这个数组进行插入删除等操作,只能对其重新赋值。NSArray只能储存Objective-C对象,另外,数组的最后一个元素一定是nil,表示结束。
数组的创建
// 创建一个空数组
NSArray*arr=[NSArrayarray];
// 创建装进一个元素的数组
NSArray*array1=[NSArrayarrayWithObject:@"obj"];
// 创建装进多个元素的数组
// nil 是用来作为数组元素结束的标记,不是数组元素
NSArray*array2=[NSArrayarrayWithObjects:@"obj1",@"obj2",@"obj3",nil];
// 通过已有数组来创建一个新数组
NSArray*array3=[NSArrayarrayWithArray:array2];
// 快速创建OC数组
NSArray*array4=@[@"111",@"222",@"333"];// 编译器特性,实质就是arrayWithObjects:方法
NSLog(@"array1 :%@",array1);
NSLog(@"array2 :%@",array2);
NSLog(@"array3 :%@",array3);
NSLog(@"array4 :%@",array4);
//实例方法创建数组
NSArray*array5=[[NSArrayalloc]initWithObjects:@"aaa",@"bbb",nil];
NSLog(@"array5 :%@",array5);
数组常用方法
// 快速创建一个数组
NSArray*arr=@[@"123",@"234",@"456"];
// 获取数组中元素个数(也可使用点语法)
NSLog(@"arr count :%lu",[arr count]);
// 查找某个对象所在索引
NSUIntegerindex=[arr indexOfObject:@"456"];
NSLog(@"index = %lu",index);
// 访问索引对应的元素
id obj=[arr objectAtIndex:0];
NSLog(@"obj = %@",obj);
// 快速访问下标对应元素
obj=arr[0];// 编译器特性,实质就是objectAtIndex:方法
NSLog(@"obj = %@",obj);
// 追加一个对象到数组(返回新的array对象)
NSArray*arr2=[arr arrayByAddingObject:@"888"];
NSLog(@"arr2 = %@",arr2);
// 判断数组是否包含指定对象
BOOL b=[arr2 containsObject:@"xyz"];
NSLog(@"b = %d",b);
b=[arr isEqualToArray:arr2];
NSLog(@"b = %d",b);
// 获得第一个元素
NSLog(@"first = %@",arr2.firstObject);
// 获得最后一个元素
NSLog(@"last = %@",arr2.lastObject);
// 根据指定的字符串连接数组元素
NSString*linkedString=[arr2 componentsJoinedByString:@"|"];
NSLog(@"linkedString :%@",linkedString);