0

我有一个 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 的整数......

有什么问题?

在此先感谢您的帮助...

4

1 回答 1

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...
}];
于 2012-04-28T00:09:24.763 回答