iOS中Collection遍歷的四種方式

iOS中得Collection主要包括 NS(Mutable)Dictionary,NS(Mutable)Array和NS(Mutable)Set。


下面簡單介紹一下遍歷這些collection的四種方法。

1.for循環

   這種是最常見的遍歷方式,幾乎所有編程語言都支持該方式

for(int i = 0; i<[arr length] ; i++){
  //do something  
  [arr objecAtIndex:i];

}

2.快速遍歷

快速遍歷是某些特有的語言中得特性,我所知道的就是java和oc中有這種方式

<pre name="code" class="objc">NSArray * arr = [NSArray alloc] init];
for(id object in arr){

  //do something on object;
}

關鍵語法 for in,這種方式可以快速的進行collection遍歷,且語法簡單。但是這種方式的缺點就是不能得到當前遍歷的下標

3.NSEnumerator

 NSEnumerator和Java語言的Iterator很像,就是得到當前collection的迭代器,然後利用這個迭代器進行遍歷
 
 
NSArray * arr = [[NSArray alloc] init];
    NSEnumerator * enuratorArr = [arr objectEnumerator];
    id object;
    while ((object = [enuratorArr nextObject])) {
        
        //do something with object
    }
    
    NSDictionary * dic = [[NSDictionary alloc] init];
    NSEnumerator * enumratorDic = [dic objectEnumerator];
    
    NSSet * set = [[NSSet alloc] init];
    NSEnumerator * enuratorSet = [set objectEnumerator];
 

4.enumerateKeysAndObjectsUsingBlock

最後一種遍歷方式

NSArray * arr = [[NSArray alloc] init];
    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
     
        //obj
        //idx
        //stop
    }];
    
    NSDictionary * dic = [[NSDictionary alloc] init];
    [dic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        
        //key
        //obj(value)
        //stop
        
    }];
    
    [dic enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id key, id obj, BOOL *stop) {
        
        //NSEnumerationReverse 是反序遍歷,這種方式可以選擇遍歷方式
        //其他同上
        
    }];

這種遍歷方式可以得到collection的下標,也可以在block內對元素進行操作。



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