枚舉器,快速枚舉

容器類對象:枚舉 NSEnumerator、NSDictionary。


一、枚舉:NSEnumerator

  • 依附於集合類(NSArray,NSSet,NSDictionary),沒有用來創建實例的接口。

  • NSEnumerator的nextObject方法可以遍歷每個集合元素,結束返回nil,通過與while結合使用可遍歷集合中所有項

  • 對可變數組進行枚舉操作時,不能通過添加或刪除對象這類方式來改變數組容器。


二,  代碼實例:

1.   枚舉器

NSEnumerator *enumerator=[array objectEnumerator];
while(id obj = [enumerator nextObject])
{
    NSLog(@"I found %@",obj);
}

2.   快速枚舉

for(NSString *str in array)
{
    NSLog(@"I found %@",str);
}

3.   索引法

for(int i=0;i<[array count];i++)
{
    NSLog(@"I found %@",[array objectAtIndex:i]);
}

4.   代碼塊法

[array enumerateObjectsUsingBlock:^(NSString *str,NSUInteger index,Bool *stop)
{
    NSLog(@"I found %@",str);
}];


一個文件查找器代碼:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool
    {
        NSFileManager *manager;
        manager = [NSFileManager defaultManager];
        
        NSString *home;
        home = [@"~" stringByExpandingTildeInPath];
        
        NSDirectoryEnumerator *direnum;            //文件目錄遍歷器
        direnum = [manager enumeratorAtPath:home]; //實例方法-enumeratorAtPath用於把遍歷的路徑傳給manager
        
        NSMutableArray *files;   //用可變數組存放查找出的jpg文件名
        files = [NSMutableArray arrayWithCapacity:42];
        
    
        for(NSString *filename in direnum) //(-)pathExtension查找後綴字符
        {
            if ([[filename pathExtension] isEqualTo: @"jpg"])
                {
                    [files addObject: filename];
                }

        }
        for(NSString *filename in files)
        {
            NSLog(@"%@",filename);
        }
    }
    return 0;
}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章