我有一个NSDictionary,并希望遍历对象。但同时,我需要知道字典的关键。如何在不知道键的情况下遍历字典,同时获取键和对象?
我记得有一种特殊的花式形式的快速枚举,但已经忘记了确切的语法。
有人吗?
我有一个NSDictionary,并希望遍历对象。但同时,我需要知道字典的关键。如何在不知道键的情况下遍历字典,同时获取键和对象?
我记得有一种特殊的花式形式的快速枚举,但已经忘记了确切的语法。
有人吗?
我想你想要的是这样的:从here两者
for (id key in dictionary) {
NSLog(@"key: %@, value: %@", key, [dictionary objectForKey:key]);
}
。
for (id key in mydictionary) {
id mything = [mydictionary objectForKey:key];
}
keyEnumerator返回一个对象,该对象允许您遍历字典中的每个键。从here
这也是一个不错的选择,如果你喜欢块。
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
}]
+1这可能*快于“fastEnumeration”变体(因为它可以使用Core Foundation的'CFDictionaryApplyFunction')。它为每个元素节省了昂贵的查找,因为它可以简单地迭代桶并传递键和值。 – 2013-07-02 17:03:35
据我所知,在当你问这个问题的时候,出现了在同一时间移动键和值的方法只有一个:CFDictionaryApplyFunction
。
使用此Core Foundation功能涉及循环体的丑陋C函数指针以及大量不少难看且免费的桥接铸造。
@zekel有modern way of iterating的字典。把他举起来!
顺便说一下,在iOS 4中引入了'enumerateKeysAndObjectsUsingBlock:',所以在你问这个问题4天后:) – 2013-07-02 17:15:00
看起来像快速枚举的“正常形式”。使用数组的同样的事情返回一个实际的对象。所以这实际上只是返回关键字,然后才能用来访问该值?说得通。 – dontWatchMyProfile 2010-06-17 19:34:03