博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【语法】数组Array
阅读量:6456 次
发布时间:2019-06-23

本文共 4858 字,大约阅读时间需要 16 分钟。

【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     )*/

 

 

转载于:https://www.cnblogs.com/madeininfi/p/3536641.html

你可能感兴趣的文章
WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载...
查看>>
C# 自定义事件整理项目 - EventDemo
查看>>
几何面积体积_2
查看>>
面象过程与面象对象
查看>>
用CSS实现图片水印效果代码
查看>>
谷歌设置支持webgl
查看>>
P3402 【模板】可持久化并查集
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
L207
查看>>
nginx 配置https 负载均衡
查看>>
listing_windows形式输出直线结构体的起点、终点信息
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
Java多线程和线程池
查看>>
36.Node.js 工具模块--OS模块系统操作
查看>>
存储过程报错行提示
查看>>
第一篇markdown博文
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
noj 2033 一页书的书 [ dp + 组合数 ]
查看>>