------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、NSArray的介绍和基本使用
1、NSArray的基本介绍
1)什么是NSArray?
NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组
C语言中数组的弊端:
int array[4] = {10, 89, 27, 76};
只能存放一种类型的数据(类型必须一致),不能很方便地动态添加数组元素、不能很方便地动态删除数组元素(长度固定)。
2)NSArray的使用注意
只能存放任意OC对象,并且是有顺序的;
不能存储非OC对象,比如int\float\double\char\enum\struct等;
它是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素;
2、NSArray的创建方式
1)NSArray的类方法创建
NSArray *arr = [NSArray array]; //空数组 没有意义
2)使用NSArray的对象方法创建
//有一个元素(元素的类型必须是一个OC的对象)
NSArray *arr1 = [NSArray arrayWithObject:@"abc"];
//有多个元素
NSArray *arr2 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
3)使用已经存在数组创建新的数组
NSArray *arr3 = [NSArray arrayWithArray:arr2];
3、NSArray的使用注意
数组使用注意:
NSArray直接使用NSLog()作为字符串输出时是小括号括起来的形式。
NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记)。nil就是0,0也是基本数据类型,不能存放到NSArray中。
NSArray *array = [NSArray array]; // 这样的数组永远是空的,不可能向其中增加值。(不可变性)
二、NSArray的常见用法
-(NSUInteger)count;
获取集合元素个数
-(id)objectAtIndex:(NSUInteger)index;
获得index位置的元素
-(BOOL)containsObject:(id)anObject;
是否包含某一个元素
-(id)lastObject;
返回最后一个元素
-(id)firstObject;
返回最后一个元素
-(NSUInteger)indexOfObject:(id)anObject;
查找anObject元素在数组中的位置(如果找不到,返回-1)NSNotFound
-(NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
在range范围内查找anObject元素在数组中的位置
三、NSArray的简写形式
之前
[NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];
现在
@[@"Jack", @"Rose", @"Jim"];
数组元素的访问
之前
[array objectAtIndex:0];
现在
array[0];
四、NSArray的遍历方法
1、NSArray的下标遍历
//创建一个数组
NSArray *arr = [NSArray arrayWithObject:@”1”,@”2”,@”3”,@”4”,@”5”,nil];
For(int i = 0;i<arr.count;i++){
NSLog(@”%@”,arr[i]);
}
2、NSArray的快速遍历
//for循环的增强模式
NSArray *arr = [NSArray arrayWithObject:@”1”,@”2”,@”3”,@”4”,@”5”,nil];
for(NSString *str in arr){
NSLog(@”%@”,str);
}
3、NSArray使用block遍历
NSArray *arr = [NSArray arrayWithObject:@”1”,@”2”,@”3”,@”4”,@”5”,nil];
//BOOL *stop 如果赋值为YES则可以停止循环
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
NSLog(@”下标:%ld 值:%@”,idx,obj);
}];
五、NSArray读写文件
1、NSArray数据写入到文件中
//创建一个数组
NSArray*arr = [NSArrayarrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
//写入数据到文件中
if([arr writeToFile:@"/Users/liwei/Desktop/arr.plist"atomically:YES]){
NSLog(@"写入成功!");
}
2、从文件读取数据到NSArray中
//创建一个数组,读取xml文件
NSArray*arr = [NSArrayarrayWithContentsOfFile:@"/Users/liwei/Desktop/arr.xml"];
NSLog(@"%@",arr);
//创建一个数组,读取plist
NSArray*arr = [NSArrayarrayWithContentsOfFile:@"/Users/liwei/Desktop/arr.plist"];
NSLog(@"%@",arr);
六、NSArray与字符串
1、把数组元素链接成字符串
-(NSString *)componentsJoinedByString:(NSString *)separator;
这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串
2、字符串分割方法
//定义字符串
NSString*str =@"400-588-1688";
NSArray*arr = [str componentsSeparatedByString:@"-"];
NSLog(@"%@",arr);
七、NSMutableArray及基本使用
1、NSMutableArray介绍
NSMutableArray是NSArray的子类;
NSArray是不可变的, 一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素;
NSMutableArray是可变的, 随时可以往里面添加\更改\删除元素。
// 创建一个空的NSMutableArray
NSMutableArray *array = [NSMutableArray array];
2、NSMutableArray基本使用方法
//创建空数组
NSMutableArray*arr = [NSMutableArrayarray];
//创建数组,并且指定长度为5,此时也是空数组
NSMutableArray*arr2 = [[NSMutableArrayalloc] initWithCapacity:5];
//创建一个数组,包含两个元素
NSMutableArray*arr3 = [NSMutableArrayarrayWithObjects:@"1",@"2", nil];
//调用对象方法创建数组
NSMutableArray*arr4 = [[NSMutableArrayalloc] initWithObjects:@"1",@"2", nil];
-(void)addObject:(id)object;
添加一个元素
-(void)addObjectsFromArdObray:(NSArray *)array;
添加otherArray的全部元素到当前数组中
-(void)insertObject:(id)anObject atIndex:(NSUInteger)index;
在index位置插入一个元素
-(void)removeLastObject;
删除最后一个元素
-(void)removeAllObjects;
删除所有的元素
-(void)removeObjectAtIndex:(NSUInteger)index;
删除index位置的元素
-(void)removeObject:(id)object;
删除特定的元素
-(void)removeObjectsInRange:(NSRange)range;
删除range范围内的所有元素
-(void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
用anObject替换index位置对应的元素
-(void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
交换idx1和idx2位置的元素
3、NSMutableArray 错误用法
NSMutableArray *array = @[@"bob", @"steve", @"john"];
[array addObject:@“Peter”];
错误,使用@[@"bob", @"steve", @"john"]这种方式创建的永远是NSArray(不可变数组)