从大型NSMutableArray中删除重复项

时间:2015-01-19 16:47:50

标签: ios objective-c arrays xcode cocoa-touch

我有一个大的可变数组,按字母顺序有很多重复值。

我需要能够将我的数组* 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);

但是这会返回一个相同数组的长列表,但仍然有重复数据。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

怎么样:

NSArray *arrayWithNoDuplicates = [[NSSet setWithArray:papersObject.paperSubject] allObjects];

答案 1 :(得分:0)

一个。什么是namesSet? paperSet?

B中。但是:

NSOrderedSet *set = [NSOrderedSet orderedSetWithArray:array];
NSArray *arrayWithUniquesIsAnOrderedSet = set.array;

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