Подтвердить что ты не робот

Как я могу получить все значения для конкретного ключа из каждого NSDictionary в NSArray?

У меня есть массив, содержащий объекты словаря. В каждом словаре ключ является общим. Теперь я хочу получить все значения этого ключа. У меня есть эти значения с итерацией, но я ищу какой-то прямой путь или метод по умолчанию, который выполняет эту работу.

Не могли бы вы помочь мне получить один метод по умолчанию, который служит цели? Спасибо.

Структура данных выглядит следующим образом:

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

Это дает мне правильный ответ. Но я не хочу делать эту итерацию. Мне нужен метод, который вернет мне все значения "Матч" из всех индексов массива и сохранит их в другом массиве сразу. вновь созданный массив будет иметь только значения ключа соответствия из всех индексов массива.

Возможно ли это?

4b9b3361

Ответ 1

Там аккуратный трюк с кодировкой ключевого значения:

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 будет содержать слова в том же порядке, что и в исходном массиве словарей.