容器类对象:枚举 NSEnumerator、NSDictionary。


一、枚举:NSEnumerator

依附于集合类(NSArray,NSSet,NSDictionary),没有用来创建实例的接口。

NSEnumerator的nextObject方法可以遍历每个集合元素,结束返回nil,通过与while结合使用可遍历集合中所有项。

对可变数组进行枚举操作时,不能通过添加或删除对象这类方式来改变数组容器。


二, 代码实例:

1. 枚举器

NSEnumerator*enumerator=[arrayobjectEnumerator];while(idobj=[enumeratornextObject]){NSLog(@"Ifound%@",obj);}

2. 快速枚举

for(NSString*strinarray){NSLog(@"Ifound%@",str);}

3. 索引法

for(inti=0;i<[arraycount];i++){NSLog(@"Ifound%@",[arrayobjectAtIndex:i]);}

4. 代码块法

[arrayenumerateObjectsUsingBlock:^(NSString*str,NSUIntegerindex,Bool*stop){NSLog(@"Ifound%@",str);}];


一个文件查找器代码:

#import<Foundation/Foundation.h>intmain(intargc,constchar*argv[]){@autoreleasepool{NSFileManager*manager;manager=[NSFileManagerdefaultManager];NSString*home;home=[@"~"stringByExpandingTildeInPath];NSDirectoryEnumerator*direnum;//文件目录遍历器direnum=[managerenumeratorAtPath:home];//实例方法-enumeratorAtPath用于把遍历的路径传给managerNSMutableArray*files;//用可变数组存放查找出的jpg文件名files=[NSMutableArrayarrayWithCapacity:42];for(NSString*filenameindirenum)//(-)pathExtension查找后缀字符{if([[filenamepathExtension]isEqualTo:@"jpg"]){[filesaddObject:filename];}}for(NSString*filenameinfiles){NSLog(@"%@",filename);}}return0;}