我试过这样做:Values = [[NSSet setWithArray:Values] allObjects];
并没有成功,
由于
答案 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"];
请参阅以下文章以获得完整的理解