Получить конкретное поле данных из NSDictionarys, вложенных в NSArray - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть массив с вложенными словарными данными, подобный этому:

    [{ 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"] и реализовал customFilterForFoo для категории в NSDictionary, но это заканчивается *** 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 голосов
/ 19 февраля 2012

Вы должны выполнить цикл в своем массиве словарей, а затем при каждом поиске значения вашего foo:

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

, если вы хотите получить «желаемый результат», вы можете использовать метод setValue: forKey:результатом является массив значений Foo, кодирование значения ключа не обязательно во всех случаях (если вы не хотите добавить что-то еще в свой массив)

...