无论键如何,如何遍历 NSMutableDictionary 中的所有对象?
问问题
59357 次
6 回答
211
标准方式如下所示
for(id key in myDict) {
id value = [myDict objectForKey:key];
[value doStuff];
}
于 2010-10-12T11:58:52.993 回答
30
您可以使用
[myDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
// do something with key and obj
}];
如果您的目标操作系统支持块。
于 2012-08-02T08:51:36.660 回答
23
You can use [dict allValues]
to get an NSArray
of your values. Be aware that it doesn't guarantee any order between calls.
于 2010-10-12T12:03:32.847 回答
5
- 对于简单循环,快速枚举比基于块的循环快一点
- 使用基于块的枚举进行并发或反向枚举比使用快速枚举更容易使用 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
}];
于 2014-08-12T10:06:00.597 回答
3
您不需要为变量赋值。您可以使用 直接访问它myDict[key]
。
for(id key in myDict) {
NSLog(@"Key:%@ Value:%@", key, myDict[key]);
}
于 2016-08-26T06:50:34.457 回答
2
另一种方法是使用字典枚举器。以下是来自 Apple 的一些示例代码:
NSEnumerator *enumerator = [myDictionary objectEnumerator];
id value;
while ((value = [enumerator nextObject])) {
/* code that acts on the dictionary’s values */
}
于 2013-04-23T13:28:10.433 回答