2011-02-07 6 views
0

J'ai un tableau qui contient un groupe de dictionnaires composé de deux clés nommées nom et valeur. J'essaie de trier le tableau en fonction de la clé de nom du dictionnaire - Mais le dictionnaire contient des lettres danoises qui apparaissent dans le mauvais ordre (fx 'a å b c', au lieu de 'abc .. å ') - Comment est-ce que je peux trier correctement avec les caractères danois?Tableau de tri contenant des dictionnaires et des lettres étrangères?

NSSortDescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
self.cityOptionsArray = (NSMutableArray *)[tempCityArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:nameSortDescriptor]]; 

Répondre

1

NSSortDescriptor a un initialiseur qui vous permet d'appeler une méthode comparer sur mesure sur les objets qu'il agit sur.

Dans votre cas, (et puisque vos clés sont NSStrings) vous voulez utiliser localizedCompare:.

Vous pouvez l'utiliser comme ceci:

NSSortdescriptor *nameSortDescriptor = [[NSSortDescriptor alloc] 
      initWithKey:@"name" 
      ascending:YES 
      selector:@selector(localizedCompare:)]; 

S'il vous plaît rappelez-vous de le libérer, après que vous avez fini avec elle. Pour plus d'informations, voir Sort Descriptor Programming Topics.

+0

Merci :) Et je l'ai publié - C'était juste un petit extrait de mon dossier :) – Milk78

+0

Cette réponse fonctionne pour moi aussi. J'ai un tableau de NSMutableDictionaries comme tableau et en utilisant initWithKey je sélectionne quelle clé devrait être l'ordre référencé. AVIS que cela fonctionne pour commander des objets de type String qui contiennent des lettres, mais ce n'est pas bon pour Strings qui contient seulement des nombres, tels que NSNumber comme format NSString. – doruvil

Questions connexes