68 votes

Le meilleur moyen de trier un NSArray d'objets NSDictionary?

J'ai du mal à essayer de trier un tableau de dictionnaires.

Mes dictionnaires ont quelques valeurs d’intérêt, de prix, de popularité, etc.

Aucune suggestion?

200voto

Warrior Points 13394

Utilisez NSSortDescriptor comme ceci.

 NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"interest"  ascending:YES];
    stories=[stories sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
    recent = [stories copy];
 

stories est le tableau que vous voulez trier. recent est un autre tableau mutable qui a trié les valeurs du dictionnaire. Modifiez les @"interest" avec la valeur de clé sur laquelle vous devez trier.

Bonne chance

25voto

superarts.org Points 685
 [array sortUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];
 

Je ne veux pas vraiment le diviser en plusieurs lignes. C'est déjà assez simple pour moi.

11voto

Ansari Awais Points 23

Vous pouvez simplement passer du parent à la propriété enfant requise. Par exemple

 NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"parent.child.child"  ascending:YES];
 

4voto

Lemonsanver Points 903

Mise à jour, sortUsingDescriptors est maintenant triéArrayUsingDescriptors

Donc, c'est comme:

 items  = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
 

0voto

St3fan Points 16196

Écrivez une fonction de tri qui compare les champs pertinents dans deux dictionnaires. Lorsque vous avez cette version, vous pouvez par exemple utiliser NSArray#sortedArrayUsingFunction:context: pour trier votre tableau.

Voir la référence de classe NSArray

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X