2011年5月13日金曜日

objective-Cで配列や辞書のループをする。高速列挙も使ってみる

高速列挙はPythonのように簡単だ!ლ(・ิω・ิლ)
int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
    
    //for分を使って配列を参照
    NSArray *arr =[NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd",@"eee",@"fff", nil];
    for(int i=0; i<[arr count]; i++){
        NSLog(@"index: %d, value:%@",i,[arr objectAtIndex:i]);
    }
    
    NSLog(@"----------------");
    
    //for分を使って辞書を参照
    NSDictionary *dict =[NSDictionary dictionaryWithObjectsAndKeys:
                         @"1",@"a",
                         @"2",@"b",
                         @"3",@"c",
                         @"4",@"d",
                         @"5",@"e",
                         @"6",@"f",
                         @"7",@"g"
                         , nil];
    NSArray *keys = [dict allKeys];
    for(int i=0; i<[keys count]; i++){
        NSLog(@"key:%@ value:%@\n",
              [keys objectAtIndex:i],
              [dict objectForKey:[keys objectAtIndex:i]]);
    }

    NSLog(@"----------------");

    //NSEnumeratorを使う
    //arrayをループ
    NSEnumerator *enumerator =[arr objectEnumerator];
    id obj;
    while(obj =[enumerator nextObject]){
        NSLog(@"value:%@",obj);
    }

    NSLog(@"------dictをループ----------");

    //辞書の値の列挙
    NSEnumerator *enumerator2 =[dict objectEnumerator];
    id obj1;
    while(obj1 =[enumerator2 nextObject]){
        NSLog(@"value:%@",obj1);    
    }
    //辞書のキーの列挙
    NSEnumerator *kEnumerator =[dict keyEnumerator];
    id key;
    while(key =[kEnumerator nextObject]){
        NSLog(@"key:%@",key);            
    }
    
    //高速列挙
    NSLog(@"-----高速列挙-----------");
    
    //NSArrayをループ
    NSLog(@"NSArrayをループ");
    for(id obj2 in arr){
        NSLog(@"%@",obj2);
    }
    //NSdictをループ
    NSLog(@"NSdictをループ");    
    for(id key in dict){
        NSLog(@"key:%@ value:%@",key,[dict objectForKey:key]);        
    }
    //NSEnumeratorをループ
    NSLog(@"NSEnumeratorをループ");
    NSEnumerator *enumerator3 = [dict objectEnumerator];
    for(id obj3 in enumerator3){
        NSLog(@"%@",obj3);    
    }
    
    [pool drain];
    return 0;
}

0 件のコメント:

コメントを投稿