2010-10-07 35 views

Odpowiedz

42

Twoja metoda działa, oprócz tego, że zwraca NSArray zamiast NSMutableArray. Można użyć funkcji

, aby ustawić values na zawartość nowej tablicy.

+1

Także, jeśli (x = [ Wartości się liczą]) jak to zrobić? dzięki – user393273

+7

@ user393273: ?? – kennytm

22

Należy pamiętać, że metoda NSSet może usunąć każde zamówienie w swoim NSArray. Możesz chcieć zapętlić swoją tablicę, aby zachować kolejność. Coś takiego:

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

dobry kod, wielkie dzięki. – Felipe

1

Możemy użyć wartości klucza Kodowanie:

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

Patrz poniższy artykuł dla pełnego zrozumienia

KVC Collection Parameters

Powiązane problemy