Из массива словарей сделайте массив, содержащий значения одного ключа

У меня есть набор словарей. Я хотел бы извлечь массив со всеми элементами одного конкретного словаря в исходном массиве. Можно ли это сделать без перечисления?

Ответ 1

Да, используйте метод NSArray -valueForKey:.

NSArray *extracted = [sourceArray valueForKey:@"a key"];

Ответ 2

Да, просто используйте Key-Value Coding, чтобы запросить значения ключа:

NSArray* names = [NSArray arrayWithObjects:
                  [NSDictionary dictionaryWithObjectsAndKeys:
                   @"Joe",@"firstname",
                   @"Bloggs",@"surname",
                   nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:
                   @"Simon",@"firstname",
                   @"Templar",@"surname",
                   nil],
                  [NSDictionary dictionaryWithObjectsAndKeys:
                   @"Amelia",@"firstname",
                   @"Pond",@"surname",
                   nil],
                  nil];

//use KVC to get the names
NSArray* firstNames = [names valueForKey:@"firstname"];

NSLog(@"first names: %@",firstNames);