2010-03-31 4 views
3

Je cherche simplement à trier un NSArray de NSNumbers dans l'ordre numérique mais je ne suis pas sûr de la meilleure façon de procéder. Selon ma façon de penser 001 et 002 sont assez comparables, donc je pense que l'un ou l'autre fera l'affaire. Pour 003 je ne suis pas sûr si retourner NSMutableArray lorsque la méthode attend NSArray est une bonne pratique, cela fonctionne, mais il se sent maladroit.Tri de NSArray et retour de NSArray?

-(NSArray *)testMethod:(NSArray *)arrayNumbers {  
    // 001 
    NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:arrayNumbers]; 
    [sortedArray sortUsingSelector:@selector(compare:)]; 
    arrayNumbers = [NSArray arrayWithArray:sortedArray]; 
    return(arrayNumbers); 
} 

.

-(NSArray *)testMethod:(NSArray *)arrayNumbers {  
    // 002 
    NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:arrayNumbers]; 
    [sortedArray sortUsingSelector:@selector(compare:)]; 
    arrayNumbers = [[sortedArray copy] autorelease]; 
    return(arrayNumbers); 
} 

.

-(NSArray *)testMethod:(NSArray *)arrayNumbers {  
    // 003 
    NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:arrayNumbers]; 
    [sortedArray sortUsingSelector:@selector(compare:)]; 
    return(sortedArray);  
} 

Répondre

12

Vous n'avez pas besoin d'un tableau mutable du tout. Vous pouvez juste faire:

NSArray* sortedArray = [arrayNumbers sortedArrayUsingSelector:@selector(compare:)]; 
+0

Merci Jason, totalement raté celui-là, très apprécié. – fuzzygoat

5

Je pense que vous pouvez simplement appeler

return [arrayNumbers sortedArrayUsingSelector:@selector(compare:)]; 
+0

Merci, zondle. – fuzzygoat

0

NSArray * sortedArray = [arrayNumbers sortedArrayUsingSelector: @selector (comparer :)];