2010-10-07 48 views

回答

42

你的方法應該工作,但它返回一個NSArray,而不是NSMutableArray。您可以使用

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

values設置爲新陣列的內容。

+1

此外,如果(X = [值計數])我會怎麼做?謝謝 – user393273 2010-10-07 14:28:32

+7

@ user393273:?? – kennytm 2010-10-07 14:30:44

22

請注意,NSSet方法可能會刪除您在NSArray中的任何訂單。你可能想要循環你的數組來保持順序。事情是這樣的:

NSMutableArray* uniqueValues = [[NSMutableArray alloc] init]; 
for(id e in Values) 
{ 
    if(![uniqueValues containsObject:e]) 
    { 
     [uniqueValues addObject:e]; 
    } 
} 
19
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); 
+0

不錯的代碼,非常感謝。 – Felipe 2014-08-04 21:34:27

1

我們可以使用Key值編碼:

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

請參考下面的文章完全理解

KVC Collection Parameters