来自NSMutableArray和NSDictionary项目的唯一项目?

时间:2010-10-20 13:49:12

标签: ios cocoa-touch nsmutablearray nsdictionary objective-c-blocks

如果您有一个NSMutableArray,其中包含三个NSDictionarys:

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

如何将其转换为只包含两个字符串的数组{steve,paul}。换句话说,来自原始NSMutableArray的唯一名称?有没有办法使用块来做到这一点?

2 个答案:

答案 0 :(得分:15)

与其他答案类似,您也可以这样做:

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

或者

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

答案 1 :(得分:4)

类似的东西:

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

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

[name allObjects]将返回一个唯一名称的NSArray