1,创建数组
//创建一个NSArray
//1,使用类方法创建
NSArray *ary = [NSArray array];
NSLog(@"ary = %@",ary);
NSArray *ary1 = [NSArray arrayWithObject:@"123"];
NSLog(@"ary1 = %@",ary1);
NSArray *ary2 = [NSArray arrayWithObjects:@"1",@"hello",@"world", nil];
NSLog(@"ary2 = %@",ary2);
NSArray *ary3 = [NSArray arrayWithArray:ary1];
NSLog(@"ary3 = %@",ary3);
//2,使用初始化方法创建
NSArray *ary4 = [[NSArray alloc] init];
NSLog(@"ary4 = %@",ary4);
NSArray *ary5 = [[NSArray alloc] initWithArray:ary2];
NSLog(@"ary5 = %@",ary5);
NSArray *ary6 = [[NSArray alloc] initWithObjects:@"xq",@"OC",@"some", nil];
NSLog(@"ary6 = %@",ary6);
NSString *str5[3] = {@"aaa", @"BBB", @"CCC"}; //(id)类型的指针数组
NSArray *ary7 = [[NSArray alloc] initWithObjects:str5 count:2];
NSLog(@"ary7 = %@",ary7);
//3,使用语法糖创建
ary = @[@"hello",@"lilei",@"gaosha"];
NSLog(@"ary = %@",ary);
2,数组的查询
/*********************数组查找与检索***********************/
//判断一个数组里面是否有某个对象
BOOL boolValue = [ary1 containsObject:@"123"];
NSLog(@"boolValue = %d",boolValue);
// NSRang是一个结构体,有两个属性:location和length
// location:是一个索引,该索引标识的是在A字符串中检索到B字符串的索引;
// length:是检索的字符串的长度,即B字符串的长度;
NSString *str1 = @"aabbcc?eeff";
NSRange range = [str1 rangeOfString:@"?ee"]; //若改为“?ed”,将检索不成功,返回的rng.location,rng.length也是错的数据。
NSLog(@"location = %u,length = %u,range = %@",range.location,range.length,NSStringFromRange(range));
NSRange range1 = {0,3};//表示从下标0开始检索接下来的3个范围内的元素
NSRange range2 = NSMakeRange(0, 3);
//在数组中查找指定对象是第几个元素,找到后返回index
NSUInteger i = [ary6 indexOfObject:@"OC"];
NSLog(@"i = %u",i);//注意如果数组中没有这个元素将返回一个很大的数,即出错了。
//在数组中查找指定对象,并指定查找范围,找到后返回它在数组下标中的位置
NSUInteger i1 = [ary6 indexOfObject:@"OC" inRange:NSMakeRange(0,3)];
NSLog(@"i1 = %u",i1); //在ary6数组里检索指定对象@"some",并返回它在数组中的下标位置,检索范围:NSRange range1 = {i,j},从下标i元素处开始,总共检索j个元素包括i在内,注意不要越界。eg:从0开始检索,最大检索范围为三个。如果从1开始检索,则最大检索范围length是2个而不是3个因为从1开始,它后面只有一个元素了。检索失败时返回的数据是不正确的。
//查找数组中等与于指定对象的元素并返回它在数组下标中的位置
NSUInteger i2 = [ary6 indexOfObjectIdenticalTo:@"xq"];
NSLog(@"i2 = %u",i2);
//查找数组中等与于指定对象的元素,并指定查找范围,找到后返回它在数组下标中的位置
NSUInteger i3 = [ary6 indexOfObjectIdenticalTo:@"some" inRange:NSMakeRange(0, ary6.count)];
NSLog(@"i3 = %u",i3);
bool i4 = [ary6 isEqualToArray: ary7];
NSLog(@"i4 = %d",i4);
3,数组的修改
/*********************数组的修改******************************/
//向数组添加对象返回新的数组
NSArray *ary9 = [[NSArray alloc] init];
NSArray *ary10 = [ary9 arrayByAddingObject:@"123"]; //生成一个新的数组,
NSLog(@"ary9 = %@",ary9);//ary9 依然是空的
NSLog(@"ary10 = %@",ary10);
//组合两个数组
NSArray *ary11 = [ary10 arrayByAddingObjectsFromArray:ary9];
NSLog(@"ary11 = %@,ary11.description = %@",ary11,ary11.description);
//将数组切成字符串
// NSString *str = [NSString string]; //没必要先创建一个空的字符串对象,但是一个对象要使用则必须要先创建和初始化。
NSString *str = [ary6 componentsJoinedByString:@"和"];//方法返回的就是一个字符串对象
NSLog(@"str = %@",str); //输出:str = xq和OC和some