使用PHP样式的键和对象枚举NSDictionary

typ*_*ror 15 enumeration objective-c

我知道你可以列举的键或值NSMutableDictionary使用NSEnumerator.有可能一起做两件事吗?我正在寻找类似于PHP foreach枚举器的东西,如:

foreach ($dictionary as $key => $value);
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 61

也许看看NSDictionary的方法:

enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))
Run Code Online (Sandbox Code Playgroud)

如果您不熟悉C/Objective-C中的块,这是一个很好的教程:http://thirdcog.eu/pwcblocks/

  • 我看到了这个并且喜欢我所看到的,但是块似乎只有10.6和4.0 iOS.仍在我的应用程序中支持3.1.3. (2认同)

ACB*_*urk 34

NSDictionary* d = [NSDictionary dictionaryWithObjectsAndKeys:@"obj1",@"key1",
                                                           @"obj2",@"key2",
                                                           @"obj3",@"key3",
                                                           @"obj4",@"key4",nil];

for (id key in [d allKeys]) {
    NSLog(@"%@ - %@",key,[d objectForKey:key]);
}
Run Code Online (Sandbox Code Playgroud)

输出:

keytest[7880:a0f] key3 - obj3
keytest[7880:a0f] key1 - obj1
keytest[7880:a0f] key4 - obj4
keytest[7880:a0f] key2 - obj2
Run Code Online (Sandbox Code Playgroud)

  • 一件事:在`NSDictionary`上使用快速枚举已经迭代了键,所以`[d allKeys]`是不必要的. (6认同)

Dmi*_*aev 7

现在更容易:

for (NSString * key in dict)
{
    id/* or your type */ value = dict[key];
    ...
}
Run Code Online (Sandbox Code Playgroud)