从大型 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;

顺便说一句:我强烈建议使用有序集而不是数组,因为具有唯一对象的数组 一个有序集。