循环一个NSMutableDictionary
如何循环遍历NSMutableDictionary中的所有对象,而不pipe键是什么?
一个标准的方式看起来像这样
for(id key in myDict) { id value = [myDict objectForKey:key]; [value doStuff]; }
您可以使用
[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { // do something with key and obj }];
如果你的目标操作系统支持块。
您可以使用[dict allValues]
来获取您的值的NSArray
。 请注意,它不保证通话之间的任何顺序。
- 对于简单的循环,快速枚举比基于块的循环要快一些
- 使用基于块的枚举比使用快速枚举更容易进行并发或反向枚举当使用NSDictionary循环时,您可以使用基于块的枚举器获得一个命中的键和值,而使用快速枚举,您必须使用该键来检索值在一个单独的消息发送
在快速枚举
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 }];
你不需要赋值给一个variables。 你可以用myDict[key]
直接访问它。
for(id key in myDict) { NSLog(@"Key:%@ Value:%@", key, myDict[key]); }
另一种方法是使用Dicts枚举器。 以下是来自Apple的一些示例代码:
NSEnumerator *enumerator = [myDictionary objectEnumerator]; id value; while ((value = [enumerator nextObject])) { /* code that acts on the dictionary's values */ }