NSArray概述
1 NSArray是OC中的数组类
NSArray特点
1 1)只能存放任意OC对象,并且是有顺序的 2 2)不能存放非OC对象,比如int/float/double/char/enum/struct等 3 3)它是不可变的,一但初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再玩里面添加元素
NSArray的创建方式
1 +(instancetype)array; 2 +(instancetype)arrayWithObject:(id)anObject; 3 +(instancetype)arrayWithObjects:(id)firstObj,...; 4 +(instancetype)arrayWithArray:(NSArray *)array; 5 +(id)arrayWithContentsOfFile:(NSString *)path;//读取一个xml文件 6 +(id)arrayWithContentsOfURL:(NSURL*) url;//读取一个xml文件
NSArray使用注意
1 1)NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式 2 2)NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil时数组元素结束的标记). nil就是 0 ,0也是基本数据类型,不能存放到NSArray中 3 3)由于NSArray创建以后就是不可变的,所以 NSArray * array =[NSArray array];//这样的数组永远是空的,不可能向其中增加值.(不可变性)
NSArray的常见用法
1 获取集合元素个数 2 -(NSUInteger)count; 3 获取index位置的元素 4 -(id) objectAtIndex:(NSUInteger) index; 5 判断是否包含某个元素 6 -(BOOL)containsObject:(id)anObject; 7 返回最后一个元素 8 -(id)lastObject; 9 返回第一个元素 10 -(id)firstObject; 11 查找anObject元素在数组中的位置(如果找不到,返回-1) NSNotFound 12 -(NSUInteger)indexOfObject:(id)anObject; 13 在range范围内查找anObject元素在数组中的位置 14 -(NSUInteger)indexOfObject:(id) anObject inRange:(NSRange) range;
NSArray的简写形式
1 数组的创建 2 [NSArray arrayWithObjects:@"Jack",@"Rose",@"Jim",nil] 3 简写后: 4 @[@"Jack",@"Rose",@"Jim"]; 5 6 7 数组元素的访问 8 [array objectAtIndex:0]; 9 现在 10 array[0];
NSArray的遍历
1,普通for循环 for(int i=0;i<arr.conten;i++){ NSLog(@"%@",arr[i]; } 2.增强for循环 for(NSString *str:arr){ NSLog(@"%@",str); } 3.block遍历 id obj 数组的元素的值 NSUInteger idx 索引index,获取数组元素的下标 BOOL *stop YES 表示要停止 [arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){ NSLog(@"索引:%ld---->元素值:%@ ",idx,obj); }]
NSArray读写文件
1 1.NSArray数据写入到文件中 2 //创建一个数组 3 NSArray *arr =[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil]; 4 //写入数据到文件中 5 if([arr writeToFile:@"/Users/liwei/Desktop/arr.plit" atomically:YES]){ NSLog(@"写入成功!"); } 6 7 2.从文件中读取数据,并且放到数组中 8 NSArray *arr2 =[NSArray arrayWithContentsOfFile:@"/Users/apple/Desktop/arr.plist"]; 9 NSLog(@"arrange=%@",arr2);
NSArray与字符串
1 用separator作拼接符将数组元素拼接成一个字符串 2 -(NSString *)componentsJoinedByString:(NSString *)separator; 3 字符串分隔 4 NSString *str=@"400-588-1688"; 5 NSArray *arr =[str componentsSeparatedByString:@"-"]; 6 NSLog(@"%@",arr);
NSMutableArray
1 概述: 2 NSmutableArray是NSArray得子类, 3 NSArray是不可变的,而NSMutableArray是可变的,随时可以往里面添加、更改、删除元素 4 //创建一个空的NSMutableArray 5 NSMutableArray *array = [NSMutableArray array];
NSMutableArray的基本使用
1 //创建空数组 2 NSMutableArray *arr = [NSMutableArray array]; 3 //创建一个指定长度为5的空数组 4 NSMutableArray *arrange = [[NSMutableArray alloc]initWithCapacity:5]; 5 //创建一个数组,包含两个元素 6 NSMutableArray *arr3 =[NSMutableArray arrayWithObjects:@"1",@"2",nil]; 7 //调用对象方法创建数组 8 NSMutableArray *array=[[NSMutableArray alloc] initWithObjects:@"1",@"2",nil]; 9 10
NSMutable的方法
1 添加一个元素 2 -(void) addObject:(id)object; 3 添加otherArray的全部元素到当前数组 4 -(void) addjectsFromArdObray:(NSArray *)array; 5 在index位置插入一个元素 6 -(void)insertObject:(id) anObject atIndex:(NSUInteger) index; 7 删除最后一个元素 8 -(void)removeLastObject; 9 删除所有的元素 10 -(void)removeAllObjects; 11 删除Index位置的元素 12 -(void)removeObjectAtIndex:(NSUInteger)index; 13 删除特定的元素 14 -(void)removeObject:(id)object; 15 删除range范围内的所有元素 16 -(void)removeObjectsInRange:(NSRange)range; 17 用anObject替换index位置对应的元素 18 -(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 19 交换idx1 和 idx2位置的元素 20 -(void)exchangeObjectAtIndex:(NSUInteger)idxl withObjectAtIndex:(NSUInteger)idxisdx;
NSMutableArray 错误用法
1 NSMutableArray *array = @[@"bob",@"steve",@"john"]; 2 [array addObject:@"Peter"];//错误,使用@[@"bob",@"steve",@"john"]这种方式创建的永远是NSArray(不可变数组); 3 4 正确的做法 5 NSMutableArray *array =[NSMutableArray arrayWithArray:@[@"bob",@"steve",@"john"]]; 6 [array addObject:@"Peter"];