NSDictionary与NSNumbers作为键 - 奇怪的行为

时间:2012-04-28 00:02:16

标签: iphone xcode nsdictionary

我有一个NSDictionary包含我保存到plist的其他NSDictionaries。 它的索引是NSNumbers,由(相当大的)整数组成。

当我从plist重新加载字典并尝试迭代它时

for(NSDictionary *dict in loadedDict){
    nslog(@"dict %@", dict);
}

这导致输出只包含字典的键,但不是 - 如预期的那样 - 是字典本身的转储。

我必须执行以下操作才能获取包含字典:

NSArray *allKeys = [loadedDict allKeys];
for(NSString *key in allKeys){
    nslog(@"dict %@", [loadedDict objectForKey:key]);
}

而且,是的,键实际上是整数转换为NSNumbers ...

有什么问题?

提前感谢您的帮助......

1 个答案:

答案 0 :(得分:2)

字典的快速枚举返回键:

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocFastEnumeration.html

您所看到的是预期的行为。

考虑使用块来获得对键和值的显式访问:

[loadedDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
    // use key and obj...
}];