hgp*_*gpl 24 objective-c nsdictionary key-value-coding nsarray
我有一个包含字典对象的数组.在每个字典中,密钥是常见的.现在我想获得该密钥的所有值.我有迭代的这些值,但我正在寻找一些直接的方法或一个默认的方法来完成这项工作.
你能帮我一个默认的方法来达到目的吗?谢谢.
数据结构是这样的:
<array>
<dict>
<key>Match</key>
<string>Football</string>
<key>Stadium</key>
<string>XXXXX</string>
</dict>
<dict>
<key>Match</key>
<string>HOCKY</string>
<key>Stadium</key>
<string>XXXXX</string>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
我现在这样做:
NSMutableArray * matches = [[NSMutableArray alloc] init];
for (int i = 0; i< myArray.count; i++){
[matches insertObject:[[myArray objectAtIndex:i] objectForKey:@"Match"] atIndex:i];
}
[matchDataArray addObjectsFromArray:matches];
Run Code Online (Sandbox Code Playgroud)
它给了我正确的答案.但我不想做这个迭代.我想要一个方法,它将从数组的所有索引返回"匹配"键的所有值,并立即保存在另一个数组中.新创建的数组将只包含来自数组的所有索引的Match键值.
这可能吗??
Mon*_*olo 67
键值编码有一个巧妙的技巧:
NSArray *matches = [myArray valueForKey: @"Match"];
Run Code Online (Sandbox Code Playgroud)
以下是一个实例:
NSArray *anArray = @[
@{@"aWord" : @"I"},
@{@"aWord" : @"have"},
@{@"aWord" : @"an"},
@{@"aWord" : @"array"},
@{@"aWord" : @"which"},
@{@"aWord" : @"contains"},
@{@"aWord" : @"dictionary"},
@{@"aWord" : @"objects."},
@{@"aWord" : @"Etc."},
];
NSArray *aWordArray = [anArray valueForKey:@"aWord"];
Run Code Online (Sandbox Code Playgroud)
在最后一行之后,aWordArray将包含与原始字典数组中的顺序相同的单词.