web-dev-qa-db-fra.com

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?

67
iOSDevil

Utilisez NSSortDescriptor comme ceci .. 

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

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

Bonne chance 

196
Warrior
[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.

25
superarts.org

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

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

Mise à jour, sortUsingDescriptors est maintenant triéArrayUsingDescriptors

Donc, c'est comme:

items  = [items sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor,nil]];
4
dijipiji
array = [array sortedArrayUsingDescriptors:[NSArray arrayWithObjects:[NSSortDescriptor sortDescriptorWithKey:@"YOUR-KEY" ascending:YES], nil]];

Rappelez-vous assigner à un tableau

0
Angus Lam

É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 Référence de la classe NSArray

0
Stefan Arentz