Ouf ... quel titre. J'ai donc un NSMutableArray qui est assigné des données extraites d'un appel d'API. Je n'ai pas le contrôle de la structure de la réponse d'appel de l'API, et je voudrais trier le tableau dans son format fourni. (D'autres solutions bienvenues, bien sûr)Trier Objective-c Array qui contient des objets contenant des tableaux
Ceci est un exemple idiot (pour garder les choses simples), mais le tableau que je suis désireux de trier peuvent être représentés quelque chose comme ceci:
myObjects = array( 0 => object( name => @"Jack", favoriteNumbers => object( numbers => array( 0 => 7, 1 => 11, 2 => 6 ) ) ), 1 => object( name => @"Jill", favoriteNumbers => object( numbers => array( 0 => 1, 1 => 2, 2 => 3 ) ) ), 3 => object( name => @"Sally", favoriteNumbers => object( numbers => array( 0 => 68, 1 => 103, 2 => 99 ) ) ) )
Je sais que je peut simplement trier par nom avec quelque chose comme:
NSSortDescriptor *sortDescriptor; sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO] autorelease]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; NSArray *sortByDurationArray = [myObjects sortedArrayUsingDescriptors:sortDescriptors]; // the variable "myObjects" holds the array representation from above
Mais comment trier le tableau par chaque personne 1er numéro préféré?
Le résultat souhaité trierait le tableau dans l'ordre suivant: Jill, Jack, Sally; puisque le premier numéro préféré de Jill est 1, celui de Jack est de 7 et celui de Sally est de 68.
Donc suggérez-vous que dans ma classe "colors" je devrais créer un sélecteur, tel que -compareFavoriteNumberToObject :, qui va comparer deux objets "colors" qui retournent un NSComparisonResult? Si oui, est-ce que je ferais quelque chose comme ça pour trier le tableau? [myObjects sortUsingSelector: @selector (compareFavoriteNumberToObject :)]; –
Ouais, cela semble approprié. Strictement parlant, j'irais avec '-compareFavoriteNumberWithColor:', puisque vous ne pouvez pas utiliser n'importe quel objet. –