2012-02-19 67 views
0

NSDictionarys获取特定数据字段我有一个嵌套的词典数据数组是这样的:从嵌套在NSArray中

[{ 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.'

我怎么能这样做?谢谢!

+0

您是否设法使其工作? – moxy 2012-02-19 21:01:24

+0

我已经采用了你的方法,虽然它确实不那么简洁。 – 2012-02-20 04:54:38

回答

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值的数组,在所有情况下都不需要键值编码(除非您想在阵列中添加其他内容)