如何在NSMutableDictionary中使用NSEnumerator?

时间:2009-06-30 06:56:49

标签: iphone nsenumerator

如何使用NSEnumerator和NSMutableDictionary打印出所有键和值?

谢谢!

3 个答案:

答案 0 :(得分:93)

除非你需要使用NSEnumerator,否则你可以使用快速枚举(更快)和简洁。

for(NSString *aKey in myDictionary) {
    NSLog(@"%@", aKey);
    NSLog(@"%@", [[myDictionary valueForKey:aKey] string]); //made up method
}

您也可以使用具有快速枚举的枚举器:

NSEnumerator *enumerator = [myDictionary keyEnumerator];

for(NSString *aKey in enumerator) {
    NSLog(@"%@", aKey);
    NSLog(@"%@", [[myDictionary valueForKey:aKey] string]); //made up method
}

这对于在数组中执行反向枚举器这样的事情非常有用。

答案 1 :(得分:8)

来自NSDictionary class reference

  

您可以分别使用NSEnumeratorkeyEnumerator返回的objectEnumerator对象按键或按值枚举字典的内容。

换句话说:

NSEnumerator *enumerator = [myMutableDict keyEnumerator];
id aKey = nil;
while ( (aKey = [enumerator nextObject]) != nil) {
    id value = [myMutableDict objectForKey:anObject];
    NSLog(@"%@: %@", aKey, value);
}

答案 2 :(得分:3)

这是没有对象搜索的版本。请注意,objectForKey调用不存在。 它们都使用keyEnumerator和objectEnumerator。

id aKey = nil;
NSEnumerator *keyEnumerator = [paramaters keyEnumerator];
NSEnumerator *objectEnumerator = [paramaters objectEnumerator];
while ( (aKey = [keyEnumerator nextObject]) != nil) {
    id value = [objectEnumerator nextObject];
    NSLog(@"%@: %@", aKey, value);
}