2010-02-13 9 views
6

Je me demandais si quelqu'un peut me montrer comment trier NSDictionary; Je veux le lire à partir de la dernière entrée, puisque la clé est Date + Heure et je veux être en mesure de l'ajouter à un NSMutableString. J'ai été capable de le lire en utilisant un recenseur mais je n'obtiens pas les résultats que je veux.Tri NSDictionary

Merci

Répondre

13

Pour vos besoins le plus simple est de créer un nouveau tableau à partir des touches, sorte que, puis utilisez le tableau pour faire référence à des éléments du dictionnaire d'origine.

(Notez que myComparison est votre propre méthode qui compare deux clés).

NSMutableArray* tempArray = [NSMutableArray arrayWithArray:[myDict allKeys]]; 
[tempArray sortedArrayUsingSelector:@selector(myComparison:)]; 

for (Foo* f in tempArray) 
{ 
    Value* val = [myDict objectForKey:f]; 
} 
0

J'ai agrégé quelques-unes des autres suggestions sur StackOverflow sur le tri d'un NSDictionary quelque chose de très compact qui trier par ordre alphabétique. J'ai un fichier Plist dans 'chemin' que je charge dans la mémoire et que je veux jeter.

NSDictionary *glossary = [NSDictionary dictionaryWithContentsOfFile: path]; 
NSArray   *array1 = [[glossary allKeys] sortedArrayUsingDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES selector:@selector(localizedStandardCompare:)] ]]; 
for (int i=0; i<array1.count; i++) 
{ 
    NSString* key = [array1 objectAtIndex:i]; 
    NSString* value = [glossary objectForKey:key]; 
    NSLog(@"Key=%@, Value=%@", key, value); 
}