2012-02-19 6 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.'

どのように私はこのような何かを行うことができてしまいましたか?ありがとう!

あなたは、fooの値のそれぞれの検索では、その後の辞書のあなたの配列でループする必要があり
+0

それをうまく動作させましたか? – moxy

+0

私はあなたのアプローチを採用しましたが、実際はそれほど簡潔ではありません。 –

答えて

0

:forKey:あなたは「望む結果」をしたい場合は

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

あなたはsetValueのに使用できる方法をしかし、結果からFooの値の配列です。キー値コーディングはすべてのケースで必要ではありません(配列に何か他のものを追加しない限り)

関連する問題