NSMutableArray - 删除重复项

时间:2010-10-07 14:14:29

标签: iphone objective-c nsmutablearray

我试过这样做:Values = [[NSSet setWithArray:Values] allObjects];并没有成功,

由于

4 个答案:

答案 0 :(得分:44)

您的方法应该有效,除非它返回NSArray而不是NSMutableArray。你可以用

[values setArray:[[NSSet setWithArray:values] allObjects]];

values设置为新数组的内容。

答案 1 :(得分:23)

请注意,NSSet方法可能会删除NSArray中的任何订单。您可能想要通过数组循环以保持顺序。像这样:

NSMutableArray* uniqueValues = [[NSMutableArray alloc] init]; 
for(id e in Values)
{
    if(![uniqueValues containsObject:e])
    {
        [uniqueValues addObject:e];
    }
}

答案 2 :(得分:20)

NSMutableArray* myArray =
[[NSMutableArray alloc]initWithObjects:
@"red",@"blue",@"red",@"green",@"yellow", @"33", @"33",@"red", @"123", @"123",nil];

NSOrderedSet *mySet = [[NSOrderedSet alloc] initWithArray:myArray];
myArray = [[NSMutableArray alloc] initWithArray:[mySet array]];

NSLog(@"%@",myArray);

答案 3 :(得分:1)

我们可以使用键值编码:

uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.fieldNameTobeFiltered"];

请参阅以下文章以获得完整的理解

KVC Collection Parameters