Из массива словарей создайте массив, содержащий значения одного ключа - PullRequest
12 голосов
/ 21 апреля 2010

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

Ответы [ 2 ]

40 голосов
/ 21 апреля 2010

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

NSArray *extracted = [sourceArray valueForKey:@"a key"];
12 голосов
/ 21 апреля 2010

Да, просто используйте кодирование значения ключа, чтобы запросить значения ключа:

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);
...