2010-06-17 53 views

回答

6

我想你想要的是这样的:从here两者

for (id key in dictionary) { 
    NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]); 
} 

+0

看起来像快速枚举的“正常形式”。使用数组的同样的事情返回一个实际的对象。所以这实际上只是返回关键字,然后才能用来访问该值?说得通。 – dontWatchMyProfile 2010-06-17 19:34:03

1
for (id key in mydictionary) { 
    id mything = [mydictionary objectForKey:key]; 
} 
6

这也是一个不错的选择,如果你喜欢块。

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 

}] 
+3

+1这可能*快于“fastEnumeration”变体(因为它可以使用Core Foundation的'CFDictionaryApplyFunction')。它为每个元素节省了昂贵的查找,因为它可以简单地迭代桶并传递键和值。 – 2013-07-02 17:03:35

0

据我所知,在当你问这个问题的时候,出现了在同一时间移动键和值的方法只有一个:CFDictionaryApplyFunction

使用此Core Foundation功能涉及循环体的丑陋C函数指针以及大量不少难看且免费的桥接铸造。

@zekel有modern way of iterating的字典。把他举起来!

+0

顺便说一下,在iOS 4中引入了'enumerateKeysAndObjectsUsingBlock:',所以在你问这个问题4天后:) – 2013-07-02 17:15:00

相关问题