objective-c - 如何从 NSArray 中的每个 NSDictionary 获取特定键的所有值?

标签 objective-c nsarray nsdictionary key-value-coding

<分区>

我有一个包含字典对象的数组。在每本词典中,键都是通用的。现在我想获取该键的所有值。我通过迭代获得了这些值,但我正在寻找一些直接的方法或默认方法来完成这项工作。

你能帮我找到一种默认方法吗?谢谢。

数据结构是这样的:

<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>

我现在这样做:

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];

它给了我正确的答案。但我不想做这个迭代。我想要一个方法,它会从数组的所有索引中返回所有“匹配”键的值,并立即保存在另一个数组中。新创建的数组将仅包含数组所有索引中匹配键的值。

这可能吗??

最佳答案

键值编码有一个巧妙的技巧:

NSArray *matches = [myArray valueForKey: @"Match"];

这是一个实际的例子:

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"];

在最后一行之后,aWordArray 将包含与原始字典数组中顺序相同的单词。

关于objective-c - 如何从 NSArray 中的每个 NSDictionary 获取特定键的所有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15018037/

相关文章:

objective-c - 保存 MKOverlayView 数组 -> plist

ios - NaN 会导致这个核心音频 iOS 应用程序偶尔崩溃吗?

ios - 重新打开应用程序时,白色 UIStatusbar 会轻微闪烁?

iphone - 以编程方式更改图像的颜色

objective-c - iOS 核心图形 : Draw ONLY shadows of a CGPath

iphone - iOS:删除由NSArray创建的UIImageView实例?

ios - 字典数组还是带数组的字典?

ios - 我的 NSDictionary 不知怎么的一个键有多个值

ios - NSPredicate - 包含未按预期运行

ios - NSMutableDictionary 的默认容量是多少?