Objective-C遍历数据的几种方式
2015-08-29 11:35
447 查看
遍历的几种方式:
1、通过索引,如通过数组下标来遍历数组 -objectAtIndex()
2、使用NSEnumerator容器来存放数据项,通过nextObject来获取下一个数据
3、使用快速枚举(os x10.5以后)
4、最新的代码块方法(os x 10.5以后)
第一种通过下标的方式来遍历数据,这种方式太简单,这里不显示示例代码
第二种示例代码:
查找用户目录下所有的.jpg文件:
第三种使用快速枚举(针对os x10.5以后)
简单示例:
查找用户目录下所有的.jpg文件:
第四种通过代码块来实现,苹果公司添加了一个能在NSArray中通过代码块枚举对象的方法,代码如下:
我们仿照快速枚举
来重写一下上面的给出的代码块,得到如下代码:
代码块和快速枚举的不同:通过代码块可以让循环操作并发执行,而通过快速枚举执行操作要一项一项的线性完成
以上就是我自己理解的Objective-C的遍历数据的几种方式,写下来是为了以后能更好的回顾,如有错误,望大家指正。
1、通过索引,如通过数组下标来遍历数组 -objectAtIndex()
2、使用NSEnumerator容器来存放数据项,通过nextObject来获取下一个数据
3、使用快速枚举(os x10.5以后)
4、最新的代码块方法(os x 10.5以后)
第一种通过下标的方式来遍历数据,这种方式太简单,这里不显示示例代码
第二种示例代码:
查找用户目录下所有的.jpg文件:
//使用NSEnumerator void getFile(){ NSFileManager *manager; //获取NSFileManager对象,使用默认的Manager manager = [NSFileManager defaultManager]; NSString *home; //获取主目录,~代表主目录,stringByExpandingTildeInPath将~替换成当前用户的主目录 home = [@"~" stringByExpandingTildeInPath]; //将路径传入到文件管理器中,得到在当前路径中的所有文件的目录,方便接下来进行比较 NSDirectoryEnumerator *dirnum; NSMutableArray *files; //用于存放匹配成功的文件名 files = [NSMutableArray arrayWithCapacity: 42]; NSString *filename; //用于临时存放一个当前目录下的一个文件的名字 while(filename = [dirnum nextObject]) { if([[filename pathExtension] isEqualTo:@"jpeg"]) { //pathExtension输出文件扩展名 [files addObject:filename]; //匹配成功 } } NSEnumerator *fileenum; fileenum = [files objectEnumerator]; //将获取到匹配的文件名转换成可用于遍历的容器中 while(filename = [fileenum nextObject]) {//进行遍历 NSLog(@"%@",filename); } }
第三种使用快速枚举(针对os x10.5以后)
简单示例:
for(NSString *string in array) { NSLog(@"I found %@",string); }
查找用户目录下所有的.jpg文件:
//通过快速枚举方法 void getFile() { NSFileManager *manager = [NSFileManager defaultManager]; NSString *home; home = [@"~" stringByExpandingTildeInPath]; NSMutableArray *files; files = [NSMutableArray arrayWithCapacity:42]; for(NSString *fileName in [manager enumeratorAtPath:home]) { if([[fileName pathExtension] isEqualToString:@"jpg"]){ [files addObject:fileName]; } } for(NSString *fileName in files){ NSLog(@"%@",fileName); } }
第四种通过代码块来实现,苹果公司添加了一个能在NSArray中通过代码块枚举对象的方法,代码如下:
-(void)enumerateObjectsUsingBlock:(void (^)(id obj,NSUInteger index,BOOL *stop))block;
我们仿照快速枚举
for(NSString *string in array) { NSLog(@"I found %@",string); }
来重写一下上面的给出的代码块,得到如下代码:
[array enumerateObjectsUsingBlock:^(NSString *string,NSUInteger index,BOOL *stop){ NSLog(@"I found %@",string); }];
代码块和快速枚举的不同:通过代码块可以让循环操作并发执行,而通过快速枚举执行操作要一项一项的线性完成
以上就是我自己理解的Objective-C的遍历数据的几种方式,写下来是为了以后能更好的回顾,如有错误,望大家指正。
相关文章推荐
- Objective-C 【完整OC项目-购票系统-系统分析-代码实现】
- Objective-C 中一些基本概念
- Objective-C 【完整OC项目-购票系统-系统分析-代码实现】
- Objective-C 【完整OC项目-购票系统-系统分析-代码实现】
- 【Objective-C】面向对象—类和对象
- 【Objective-C】面向对象—三大特性
- NSString对文件的操作
- 【Objective-C】01-面向对象
- OC基础-零基础学习Objective-C:第一部分.类和对象
- Objective-C(内存管理)
- javascript引用类型之对象Object
- Deleting JPA Entity Objects
- GSON Empty Json Object to null
- Objective-C语法之代码块(block)的使用
- Objective-C代码规范(1)
- iOS js与objective-c的交互(转)
- 字典方法setValue:ForKey setObject:ForKey的区别
- 原生js的Function,Array,Object构造函数的prototype原型方法扩展
- iOS开发之Objective-C语法之词典对象
- Q_OBJECT宏的作用