【1】数组的创建
数组是不能添加元素的,只能在创建的同时赋值。
1.创建数组
//静态方法不需要管理内存 NSArray *array= [NSArray array]; //这样创建是没有数组的,是创建空的数组 array= [NSArray arrayWithObject:@"123"];//创建一个有1个元素的数组。 array= [NSArray arrayWithObjects:@"1",@"2",@"3", nil];//这里是创建一个有多个元素的数组 //nil在这里表示是一个结束符类似于/0.
2.查询数组内元素个数
//查询元素个数 int count=[array count];//用来计算数组内部有多少个元素 //同上面等价 int count =array.count; NSLog(@"%i",count); //输出
3.数组中既可以放元素,也可以放数组
//或者有一种方式就是arrary1中既可以放元素,也可以放数组 NSObject *obj=[[NSObject alloc] init]; NSArray *array1=[NSArray arrayWithObjects:@"a",@"b",@"c",obj, nil]; NSLog(@"%@",array1);
【2】数组的查询
1.是否包含某元素
//判断字符数组中是否包含某元素 NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; if([array containsObject:@"1"]){ NSLog(@"包含了字符"); }else { NSLog(@"不包含该字符"); }
2.判断数组内最后一个元素是什么
//判断最后一个元素是什么 NSString *last=[array lastObject]; NSLog(@"last=%@",last);
3.通过索引查询该索引值对应的元素
//根据某个索引值然后找到该位置的元素是什么 NSString *str=[array objectAtIndex:1]; NSLog(@"%@",str);
4.通过元素查询索引值(如果是负数,那么就是查找不倒。)
//根据某个元素,查找到该元素的索引位置 //如果是负数,那么就是查找不倒。 int index=[array indexOfObject:@"2"]; NSLog(@"index=%i",index);
【3】数组的比较
1.比较两个集合内容是否相同
//比较两个集合内容是否相同 -(BOOL)isEqualToArray:(NSArray *)otherArray
2.返回第一个相同的对象元素
//返回两个集合中第一个相同的对象元素 -(id)firstObjectCommonWithArray:(NSArray *)otherArray
【4】数组的遍历
1.for循环进行遍历
void arrayFor(){ NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; int count =array.count; for(int i=0;i
2.快速遍历方法
void arrayFor2(){ NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; int i=0; for(id obj in array){ NSLog(@"%i-%@",i,obj); i++; }}
3.快速遍历方法
enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) 如图打入这种方法的时候将^(id obj, NSUInteger idx, BOOL *stop)这一句进行双击展开
展开成为:
例子如下:
void arrayFor3(){ NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { //每遍历一个元素都会调用一次block //利用指针修改外面bool变量值 if(idx==1){ *stop=YES;//传入一个stop指针让内部能进行修改 } NSLog(@"%i-%@",idx,obj);}];}
4.使用迭代器进行遍历
NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; NSEnumerator *enumerator=[array objectEnumerator];//获取数组的迭代器
5.反序迭代器,从尾部开始遍历
NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil];
//反序迭代器,从尾部开始进行遍历
NSEnumerator *enumerator=[array reverseObjectEnumerator];
6.取得下一个需要遍历的元素
[enumerator nextObject];//取得下一个需要遍历的元素 id obj=nil; while (obj=[enumerator nextObject]) { NSLog(@"obj=%@",obj); }
7.返回迭代器中的所有元素
//返回迭代器中的所有元素 NSArray *array2=[enumerator allObjects]; NSLog(@"array2:%@",array2);
【5】派生数组
NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; //这句话的意思就是说,在上面array的基础上再加入一个元素进入生成新的数组array2 NSArray *array2=[array arrayByAddingObject:@"4"]; NSLog(@"%@",array2); /* 2014-01-31 14:55:43.412 NSArray2[404:303] ( 1, 2, 3, 4 ) */
2.
NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3", nil]; NSArray *array3= [array arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:@"5",@"6", nil]]; NSLog(@"%@",array3); /*2014-01-31 14:55:43.414 NSArray2[404:303] ( 1, 2, 3, 5, 6 )*/
3.数组元素的截取
NSArray *array4=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; //给定一个范围进行截取操作 NSRange range=NSMakeRange(1, 2); NSArray *array5= [array4 subarrayWithRange:range]; NSLog(@"%@",array5); /*2014-01-31 14:59:21.153 NSArray2[439:303] ( 2, 3 ) */
【6】数组的其他用法
1.将数组内的元素拼接起来然后生成新的一个字符串
//将数组内的元素拼接起来然后生成新的一个字符串 NSArray *array=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; NSString *str= [array componentsJoinedByString:@","]; NSLog(@"%@",str); /*2014-01-31 15:02:08.786 NSArray2[472:303] 1,2,3,4*/
2.将一个数组写到文件中去(生成一个xml文件)
//将一个数组写到文件中去(生成一个xml文件) NSString *path=@"/Users/haiyefeng/Desktop/test.txt"; [array writeToFile:path atomically:YES];
3.//从文件中读取数组内容(文件有严格的格式要求)
//从文件中读取数组内容(文件有严格的格式要求) NSArray *array2=[NSArray arrayWithContentsOfFile:path]; NSLog(@"%@",array2);
接上:文件内容要求
1 2 3 4
【7】数组的排序
1.返回一个排好序的数组,原先数组的元素顺序不会改变
NSArray *array=[NSArray arrayWithObjects:@"2",@"4",@"3",@"1", nil]; //返回一个排好序的数组,原先数组的元素顺序不会改变 //制定的元素的比较方法:compare: NSArray *array2=[array sortedArrayUsingSelector:@selector(compare:)]; NSLog(@"%@",array2); /*2014-01-31 15:18:45.952 NSArray2[658:303] ( 1, 2, 3, 4 )*/