2010-09-15 10 views

Répondre

14

pour un simple s J'aime comme ça, j'aime utiliser des descripteurs de tri.

Supposons que vous avez un tableau mutable d'objets dont la classe a une name propriété NSString:

NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO]; 
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]]; 
+0

merci. cela a fonctionné – mrugen

+0

Cela commencera par "W" et non par "A". Comment commencer avec "A"? –

+0

J'ai reçu l'ordre croissant des CAPS et des lettres minuscules. Comme "A à Z" puis "a à z". Ce que je dois faire. – user3589771

8

Absolument, vous pouvez utiliser sortUsingSelector: pour cela:

[myArray sortUsingSelector:@selector(compare:)]; 

Si votre tableau a des objets personnalisés, alors vous aurez besoin de mettre en œuvre une méthode de tri sur ces objets:

@implementation myCustomObject 
    ... 

    -(NSComparisonResult) compare:(myCustomObject*) other { 
     return [self.name compare:other.name]; 
    } 

@end 
+0

bonne réponse d'une ligne (pour les tableaux simples). – newenglander

2

approche de TechZen fonctionne bien, mais il fonctionnerait mieux si vous avez utilisé de NSSortDescriptor + sortDescriptorWithKey: croissant: sélecteur :, passage "localizedCompare:" en tant que sélecteur. De cette façon, le tri est localisé dans la langue de l'utilisateur, ce qui peut faire une grande différence dans la comparaison de chaînes.

0
myArray=[myDict keysSortedByValueUsingSelector:@selector(compare:)]; 

Simplement travaillé pour moi!

+1

hmm .. quelle est la différence avec les réponses précédentes? – kleopatra