何时使用?
如果我循环字典并从中删除键值,那么枚举器会为此工作吗?文档似乎回答了这个问题:
如果将此方法与可变子类的实例一起使用 NSDictionary,您的代码不应修改条目 列举。如果您打算修改条目,请使用allKeys 用于创建字典键的“快照”的属性。然后用 此快照用于遍历条目,并在整个过程中对其进行修改。
表现?,因为人们总是想知道。
答案 0 :(得分:0)
至少可以通过两种方式实现NSDictionary
的迭代:将NSArray
与[NSDictionary allKeys]
或NSEnumerator
一起使用。
NSArray *keyArray = [bigUglyDictionary allKeys];
int count = [keyArray count];
for (int i=0; i < count; i++) {
NSDictionary *tmp = [bigUglyDictionary objectForKey:[ keyArray objectAtIndex:i]];
}
NSEnumerator *enumerator = [bigUglyDictionary keyEnumerator];
id key;
while ((key = [enumerator nextObject])) {
NSDictionary *tmp = [bigUglyDictionary objectForKey:key];
}
第二种方式更快一些,所以如果你使用庞大的词典并且不需要带有键的数组