Sag*_*ari 261 enumeration objective-c nsdictionary key-value nsmutabledictionary
我发现在Objective-C中访问可变字典键和值有些困难.
假设我有这个:
NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init];
Run Code Online (Sandbox Code Playgroud)
我可以设置键和值.现在,我只想访问每个键和值,但我不知道键的数量.
在PHP中它非常简单,如下所示:
foreach ($xyz as $key => $value)
Run Code Online (Sandbox Code Playgroud)
如何在Objective-C中实现?
zne*_*eak 647
for (NSString* key in xyz) {
id value = xyz[key];
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这适用于符合NSFastEnumeration协议(可在10.5+和iOS上使用)的每个类,但它NSDictionary是少数几个可以枚举键而不是值的集合之一.我建议你阅读集合编程主题中的快速枚举.
哦,我要补充然而,你应该永远不要同时通过它枚举修改的集合.
Qui*_*lor 97
只是不遗漏使用块枚举键和值的10.6+选项...
[dict enumerateKeysAndObjectsUsingBlock:^(id key, id object, BOOL *stop) {
NSLog(@"%@ = %@", key, object);
}];
Run Code Online (Sandbox Code Playgroud)
如果您希望操作同时发生:
[dict enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id key, id object, BOOL *stop) {
NSLog(@"%@ = %@", key, object);
}];
Run Code Online (Sandbox Code Playgroud)
Bro*_*son 13
如果你需要在枚举时改变字典:
for (NSString* key in xyz.allKeys) {
[xyz setValue:[NSNumber numberWithBool:YES] forKey:key];
}
Run Code Online (Sandbox Code Playgroud)
枚举字典的最简单方法是
for (NSString *key in tDictionary.keyEnumerator)
{
//do something here;
}
Run Code Online (Sandbox Code Playgroud)
这里tDictionary是NSDictionary还是NSMutableDictionary要迭代。
| 归档时间: |
|
| 查看次数: |
243157 次 |
| 最近记录: |