NSArray
一、基本介绍
1、定义:是oc中的数组类
2、注意事项:
1)只能存放任意oc对象,并且是有顺序的;
2)不能存储非oc对象,如:int/float/double/char/enum/struct等;
3)是不可变的,一旦初始化 完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里添加元素;
NSArray *array=[NSArray array]; //该数组永远为空的,不可能向其中增加值。(不可变性)
4)NSArray直接全用NSLog()人作为字符串输出时是小括号括起来的形式;
5)NSArray中不能存储nil,因为NSArray认为nil是数组的结束(nil是数组元素结束的标记,nil即为0,0为基本数据类型,不能存放到NSArray中)。
二、创建方式
(instancetype)array;
NSArray *arr1=[NSArray array]; //空数组
(instancetype)arrayWithObject:(id)anObject;
NSArray *arr2=[NSArray arrayWithObject:@"2"]; //创建有一个元素有数组
(instancetype)arrayWithObjects:(id)firstObj,……;
NSArray *arr3=[NSArray arrayWithObjects:@"you",@"me",@2,@"he",nil]; //创建有多个元素的数组(常见),nil表示数组赋值结束
(instancetype)arrayWithArray:(NSArray *)array;
NSArray *arr5=[NSArray arrayWithArray:arr3]; //用一个数组创建另外一个数组
(instancetype)[NSArray alloc]initWithObjects:(id)firstObj,……;
NSArray *arr4=[[NSArray alloc]initWithObjects:@"she",@"here", nil]; //调用对象方法,创建数组
NSArray *arr7=[[NSArray alloc]initWithObjects:@"she",[NSNull null],@"here", nil];//存放null
三、常见用法
-(NSUInteger)count;—>获取集合元素个数
NSLog(@"%ld",arr3.count); //获取数组元素的个数,数组长度
-(id)objectAtIndex:(NSUInteger)index;—>获得index位置的元素
NSLog(@"%@",[arr3 objectAtIndex:1]); //根据小标,获取下标对应的对象
-(BOOL)containsObject:(id)anObject;—>是否包含某一个元素
if ([arr3 containsObject:@"you"]) { //判断数组中是否包含某个元素
NSLog(@"包含此元素");
}else{
NSLog(@"不包含");
}
-(id)firstObject;—>返回第一个元素
NSLog(@"%@",[ar1 firstObject]); //第一个元素
-(id)lastObject;—>返回最后一个元素
NSLog(@"%@",[ar1 lastObject]); //最后一个元素
四、遍历方法
1、下标遍历
for (int i=0; i%@",arr[i]);
}
2、快速遍历
for (NSString *str in arr) { //用for增强形式遍历
NSLog(@"-->%@",str);
}
3、使用bloc遍历
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){ //obj为数组元素,idx为数组元素的下标,stop是否停止
NSLog(@"idx=%ld,obj=%@",idx,obj); }];
//可以控制什么时候停止 stop:YES 会停止 stop:NO 不会停止
[arr enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop){
if (idx==2) {
*stop=YES; //停止,break
}else{
NSLog(@"idx=%ld,obj=%@",idx,obj); //输出数组的位,元素
}
}];
五、读写文件
1、数据写入到文件中
NSArray *array=[NSArray arrayWithObjects:@"love",@"what",@"why",@"here", nil]; //定义数组
BOOL iswrite=[array writeToFile:@"/Users/lanlan/Desktop/arr.plist" atomically:YES];//写入文件arr.plist中
BOOL iswrite=[array writeToFile:@"/Users/lanlan/Desktop/arr.xml" atomically:YES]; //写入文件arr.xml中
if (iswrite) {
NSLog(@"写入成功");
}
2、从文件读取数据到NSArray中
NSArray *readarr=[NSArray arrayWithContentsOfFile:@"/Users/lanlan/Desktop/arr.plist"];//读取文件arr.plist中的数据到NSArray中
NSArray *readarr1=[NSArray arrayWithContentsOfFile:@"/Users/lanlan/Desktop/arr.xml"];//读取文件arr.xml中的数据到NSArray中
NSLog(@"readarr1=%@",readarr1);