循环一个NSMutableDictionary

如何循环遍历NSMutableDictionary中的所有对象,而不pipe键是什么?

6 Solutions collect form web for “循环一个NSMutableDictionary”

一个标准的方式看起来像这样

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 。 请注意,它不保证通话之间的任何顺序。

  1. 对于简单的循环,快速枚举比基于块的循环要快一些
  2. 使用基于块的枚举比使用快速枚举更容易进行并发或反向枚举当使用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 */ } 
  • 使用UITextBorderStyleNone为UITextField设置填充
  • 为什么Objective-C不支持私有方法?
  • 使用iOS应用程序中的数据(select什么?NSData,CoreData,sqlite,PList,NSUserDefaults)
  • iOS - 从ViewController调用App Delegate方法
  • 如何比较UIColors?
  • iOS的UITextView或UILabel与可点击链接的行动
  • 将NSData字节转换为NSString?
  • 以编程方式检索iPhone上的内存使用情况
  • 归零ARC中的弱引用
  • 如何在UIView中加载一个xib文件
  • xcode4中框架和静态库的区别,以及如何调用它们