从大型 NSMutableArray 中删除重复项
Remove duplicates from large NSMutableArray
我有一个很大的可变数组,其中有很多按字母顺序排列的重复值。
我需要能够将我的数组 *Array 转换为一个新数组,其中包含每个字符串变体的一个条目。
我目前正在使用:
NSArray *array = [NSArray arrayWithObjects:papersObject.paperSubject, nil];
NSCountedSet *paperSet = [[NSCountedSet alloc] initWithArray:array];
NSMutableArray *namesArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
[namesSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop){
if ([paperSet countForObject:obj] == 1) {
[namesArray addObject:obj];
}
}];
NSLog(@"%@", namesArray);
但是这个 returns 相同数组的长列表,仍然有重复项。
有什么想法吗?
怎么样:
NSArray *arrayWithNoDuplicates = [[NSSet setWithArray:papersObject.paperSubject] allObjects];
一个。什么是名称集?纸集?
乙。然而:
NSOrderedSet *set = [NSOrderedSet orderedSetWithArray:array];
NSArray *arrayWithUniquesIsAnOrderedSet = set.array;
顺便说一句:我强烈建议使用有序集而不是数组,因为具有唯一对象的数组 是 一个有序集。
我有一个很大的可变数组,其中有很多按字母顺序排列的重复值。
我需要能够将我的数组 *Array 转换为一个新数组,其中包含每个字符串变体的一个条目。
我目前正在使用:
NSArray *array = [NSArray arrayWithObjects:papersObject.paperSubject, nil];
NSCountedSet *paperSet = [[NSCountedSet alloc] initWithArray:array];
NSMutableArray *namesArray = [[NSMutableArray alloc] initWithCapacity:[array count]];
[namesSet enumerateObjectsUsingBlock:^(id obj, BOOL *stop){
if ([paperSet countForObject:obj] == 1) {
[namesArray addObject:obj];
}
}];
NSLog(@"%@", namesArray);
但是这个 returns 相同数组的长列表,仍然有重复项。
有什么想法吗?
怎么样:
NSArray *arrayWithNoDuplicates = [[NSSet setWithArray:papersObject.paperSubject] allObjects];
一个。什么是名称集?纸集?
乙。然而:
NSOrderedSet *set = [NSOrderedSet orderedSetWithArray:array];
NSArray *arrayWithUniquesIsAnOrderedSet = set.array;
顺便说一句:我强烈建议使用有序集而不是数组,因为具有唯一对象的数组 是 一个有序集。