Как я могу получить все значения для конкретного ключа из каждого 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];
Это дает мне правильный ответ. Но я не хочу делать эту итерацию. Мне нужен метод, который вернет мне все значения "Матч" из всех индексов массива и сохранит их в другом массиве сразу. вновь созданный массив будет иметь только значения ключа соответствия из всех индексов массива.
Возможно ли это?
Ответы
Ответ 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
будет содержать слова в том же порядке, что и в исходном массиве словарей.