与 Jacob稍有不同的方法:
NSArray *array = [NSArray arrayWithObjects:@"bob", @"frank", @"sarah", @"sarah", @"fred", @"corey", @"corey", nil];
NSCountedSet *namesSet = [[NSCountedSet alloc] initWithArray:array];
NSMutableArray *namesArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
[namesSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop){
if ([namesSet countForObject:obj] == 1) {
[namesArray addObject:obj];
}
}];
和
NSLog(@"old: %@\nNew: %@", array, namesArray);
给出:
2011-06-16 18:10:32.783 SetTest[1756:903] old: (
bob,
frank,
sarah,
sarah,
fred,
corey,
corey
)
New: (
frank,
fred,
bob
)
块是你的好朋友!由于NSCountedSet
是NSSet
的子类,因此您可以使用可用的块方法。
NSArray *finalArray = [[NSCountedSet setWithObjects:yourArray] allObjects];
- Caleb@"frank", @"corey", @"fred", @"bob", @"sarah"
。 - Jacob Relkinfor
循环放入NSCountedSet的-objectsWithCount:
方法中会很好。 - Caleb