OC基礎—數組和字典的遍歷方法總結

——Java培訓、Android培訓、iOS培訓、.Net培訓、期待與您交流! ——-



#import <Foundation/Foundation.h>
int main()
{
    // 遍歷字典的方法:1.1 1.2 2.1 2.2(錯誤) 3.0 4.0

    NSDictionary *dict = @{@"name": @"jiale", @"address": @"beijing",@"qq": @"630655214"};

//  注意最好不要用下面的value和key作爲關鍵字。

    // 1.1 一般遍歷(for循環手動索引鍵)
/*
    NSArray *allKeys = dict.allKeys;                // 獲得所有的鍵值作爲索引。
    NSString *value;                                // id 也可以。  = [NSString string]也可以。

    for(NSInteger i = 0; i < allKeys.count; i++)    // 注意可以用點語法,說明他們是屬性值。
    {
        value = [dict objectForKey:allKeys[i]];
        NSLog(@"%@   %@", allKeys[i], value);
    }
*/

    // 1.2 一般遍歷(for循環手動索引鍵值)
/*
    NSArray *allValues = dict.allValues;
    NSArray *key;                                           //注意是數組,對應下面的allKeysForObject。id 也可以。 = [NSArray array]也可以。。

    for(NSInteger i = 0; i < allValues.count; i++)
    {
        key = [dict allKeysForObject:allValues[i]];         // 因爲是數組,所以取出它的首元素。
        NSLog(@"%@   %@", key[0], allValues[i]);
    }
*/

    // 2.1 快速遍歷(for循環遍歷鍵)

/*    for(id key in dict)
    {
        id value = [dict objectForKey:key];                // 通過鍵得到鍵值。
        NSLog(@"%@   %@", value, key);
    }
*/

    // 2.2 快速遍歷(for循環遍歷鍵值,該方法錯誤,只能遍歷鍵)
/*
    for(id obj in dict)
    {
        NSArray *key = [dict allKeysForObject:obj];
        NSLog(@"%@   ", obj);
    }
*/

    // 3.0 利用block超快速遍歷,要謹記格式,其返回值爲空。
/*
    [dict enumerateKeysAndObjectsUsingBlock:^(id key, id value, BOOL *stop) {
        NSLog(@"%@  %@", key, value);
    }];
*/

    // 4.0 利用枚舉器遍歷(索引得到鍵,不能得到鍵值,同方法2.2一個道理。)
/*
    NSEnumerator *enumerator = [dict keyEnumerator]; // 相應的,nsarray有-objectEnumerator方法。
    id key;

    while(key = [enumerator nextObject])            // 注意不要漏了此方法,NSEnumerator 只有一個屬
    {                                               // 性allObjects 和一個方法nextObject.
        NSLog(@"%@  %@", key, [dict objectForKey:key]);
    }
*/


    // 遍歷數組的方法:

    NSArray *arr = @[@"name", @"jiale", @"address", @"beijing",@"qq", @"630655214"];


    // 1.0 for循環遍歷。
/*
    for (int i = 0; i < arr.count; i++) {
        NSLog(@"%d   %@", i, arr[i]);
    }
*/
    // 2.0 快速遍歷。
/*
    for (id obj in arr) {
        NSLog(@"%d  %@", [arr indexOfObject:obj], obj);
    }
*/
    // 3.0 利用block遍歷。
/*
    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"%d  %@", idx, obj);
    }];
*/
    // 4.0 利用nsenumerator枚舉器遍歷。

    NSEnumerator *enumerator = [arr objectEnumerator];
    id obj;

    while (obj = [enumerator nextObject]) {
        NSLog(@"%d  %@", [arr indexOfObject:obj], obj);

    }
    return 0;
}


發佈了27 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章