从嵌入在NSArray中的NSDictionarys获取特定数据字段

时间:2012-02-19 08:23:43

标签: objective-c kvc

我有一个包含嵌套字典数据的数组,如下所示:

    [{ link : [
               { $ref: "foo", $href: "first_foo"},
               { $ref: "bar", $href: "barrrrrrr"},
               { $ref: "quz", $href: "quzzzzzzz"}]},
     { link : [
               { $ref: "foo", $href: "second_foo"},
               { $ref: "bar", $href: "barrrrrrr"},
               { $ref: "quz", $href: "quzzzzzzz"}]}]

我想挑选每本词典的foo。想要的结果如下:

    [{ foo: "first_foo"}, { foo: "second_foo"}]

我已尝试使用[myArray valueForKey @"@customFilterForFoo"],并在NSDictionary上实施customFilterForFoo类别,但最终会以*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<__NSCFArray 0x6b81a10> valueForUndefinedKey:]: this class is not key value coding-compliant for the key customFilterForFoo.'

结束

我该怎么做这样的事情?谢谢!

1 个答案:

答案 0 :(得分:0)

你应该在你的词典数组中循环,然后在每个词典中搜索你的foo值:

NSMutableArray *arrayOfFooValues = [[NSMutableArray alloc] init];
for (NSDictionary *aDictionary in myArray) {
      if ([aDictionary valueForKey @"foo"]!= nil) {
           [arrayOfFooValues addObject:[aDictionary valueForKey @"foo"]];
      }
}

如果你想要“想要的结果”,你可以使用setValue:forKey:方法,但由于结果是一个Foo值的数组,因此在所有情况下都不需要键值编码(除非你想在其中添加其他内容)你的阵列)