循环遍历NSMutableDictionary

时间:2010-10-12 11:55:54

标签: objective-c ios nsmutabledictionary

如何在不管密钥的情况下遍历NSMutableDictionary中的所有对象?

6 个答案:

答案 0 :(得分:208)

标准方式看起来像这样

for(id key in myDict) {
    id value = [myDict objectForKey:key];
    [value doStuff];
}

答案 1 :(得分:28)

你可以使用

[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
    // do something with key and obj
}];

如果您的目标操作系统支持阻止。

答案 2 :(得分:22)

您可以使用[dict allValues]获取NSArray的值。请注意,它不保证呼叫之间的任何顺序。

答案 3 :(得分:3)

  1. 对于简单循环,快速枚举比基于块的循环快一点
  2. 使用基于块的枚举比使用快速枚举更容易进行并发或反向枚举 使用NSDictionary进行循环时,您可以使用基于块的枚举器在一次命中中获取键和值,而使用快速枚举时,您必须使用该键在单独的消息中检索值发送
  3. 快速枚举中的

    for(id key in myDictionary) {
       id value = [myDictionary objectForKey:key];
      // do something with key and obj
    }
    
    块中的

    [myDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    
       // do something with key and obj
      }];
    

答案 4 :(得分:3)

您无需为变量赋值。您可以使用myDict[key]直接访问它。

    for(id key in myDict) {
        NSLog(@"Key:%@ Value:%@", key, myDict[key]);
    }

答案 5 :(得分:2)

另一种方法是使用Dicts枚举器。以下是Apple的一些示例代码:

NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;

while ((value = [enumerator nextObject])) {
    /* code that acts on the dictionary’s values */
}