【发布时间】:2010-10-07 14:14:28
【问题描述】:
我试过这样做:Values = [[NSSet setWithArray:Values] allObjects]; 没有成功,
谢谢
【问题讨论】:
标签: iphone objective-c nsmutablearray
我试过这样做:Values = [[NSSet setWithArray:Values] allObjects]; 没有成功,
谢谢
【问题讨论】:
标签: iphone objective-c nsmutablearray
您的方法应该可以工作,只是它返回一个NSArray 而不是NSMutableArray。你可以使用
[values setArray:[[NSSet setWithArray:values] allObjects]];
将values 设置为新数组的内容。
【讨论】:
请注意,NSSet 方法可能会删除您在NSArray 中的任何订单。您可能希望循环遍历您的数组以保持顺序。像这样:
NSMutableArray* uniqueValues = [[NSMutableArray alloc] init];
for(id e in Values)
{
if(![uniqueValues containsObject:e])
{
[uniqueValues addObject:e];
}
}
【讨论】:
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);
【讨论】:
我们可以使用键值编码:
uniquearray = [yourarray valueForKeyPath:@"@distinctUnionOfObjects.fieldNameTobeFiltered"];
完整理解请参考以下文章
【讨论】: