3

Если у вас есть NSMutableArray с тремя NSDictionarys, как это:Уникальные предметы из NSMutableArray с элементами NSDictionary?

{ 
    name:steve, age:40; 
    name:steve, age:23; 
    name:paul, age:19 
} 

Как превратить это в массив с помощью всего лишь две строки {Стивом, PAUL}. Другими словами, уникальные имена из оригинального NSMutableArray? Есть ли способ сделать это с помощью блоков?

ответ

4

что-то подобное:

NSMutableSet* names = [[NSMutableSet alloc] init]; 

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)) { 
    [names addObject:[obj valueForKey:@"name"]]; 
}]; 

[имена AllObjects] возвращает NSArray уникального имени

15

похож на другой ответ, вы также можете сделать:

NSSet * names = [NSSet setWithArray:[myArray valueForKey:@"name"]]; 

Или

NSArray * names = [myArray valueForKeyPath:@"@distinctUnionOfObjects.name"]; 
+1

Лучшее решение n чем мой! Я не думаю, что использовать valueForKey для массива! –