如何从NSMUtableArray中完全删除重复的项目?

时间:2014-08-14 11:24:49

标签: objective-c arrays nsmutablearray

我有一个像:

这样的数组
originalArray result: (
     1274,
     1275,
     1276,
     1277,
     1278,
     1279,
     1280,
     1281,
     1282,
     1283,
     1284,
     1285,
     1286,
     1287,
     1288,
     1280,
     1279,
     1283,
     1285,
     1286,
     )

但我想删除重复的项目;最后我想返回数组:

 originalArray result: (
     1274,
     1275,
     1276,
     1277,
     1278,
     1281,
     1282,
     1284,
     1287,
     1288,    
     )

任何人都可以帮我吗?

3 个答案:

答案 0 :(得分:1)

NSSet默认只包含唯一对象。不允许重复。

    //1. Create NSSet from Array
    NSSet *uniqueObjectSet = [NSSet setWithArray:yourArray];

    //2. Make unique array from NSSet
    NSMutableArray *uniqueArray = [[NSMutableArray alloc] initWithArray:[uniqueObjectSet allObjects]];

答案 1 :(得分:0)

您可以使用集合运算符@distinctUnionOfObjects来获取唯一对象数组:

NSArray* filteredNumbers= [numbers valueForKeyPath:@"@distinctUnionOfObjects.intValue"];

要获得您期望的结果,您还必须对其进行排序:

filteredNumbers= [filteredNumbers sortedArrayUsingSelector:@selector(compare:)];

答案 2 :(得分:0)

您可以使用此代码

NSArray *copy = [mutableArray copy];
NSInteger index = [copy count] - 1;
    for (id object in [copy reverseObjectEnumerator]) {
       if ([mutableArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound) {
           [mutableArray removeObjectAtIndex:index];
        }
       index--;
    }