2010-09-15 3 views

ответ

14

для простых с ort вот так, мне нравится использовать дескрипторы сортировки.

Предположим, у вас есть изменяемый массив объектов, чей класс имеет свойство name NSString:

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

thansk. он работал – mrugen

+0

Это начнется с «W», а не с «A». Как начать с «А»? –

+0

Я получил восходящий порядок первых CAPS и маленьких букв. Как «от A до Z», а затем «от a до z». Что мне нужно сделать. – user3589771

8

Абсолютно, вы можете использовать sortUsingSelector: для этого:

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

Если массив имеет собственные объекты, то вам нужно будет реализовать метод сортировки по этим объектам:

@implementation myCustomObject 
    ... 

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

@end 
+0

приятный ответ одной строки (для простых массивов). – newenglander

2

подход TechZen работает хорошо, но он будет работать лучше, если бы вы использовали NSSortDescriptor в + sortDescriptorWithKey: по возрастанию: селектор :, прохождения «localizedCompare:» в качестве селектора. Таким образом, сортировка локализуется на языке пользователя, что может существенно повлиять на сравнение строк.

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

Просто Работал для меня!

+1

hmm .. В чем разница с более ранними ответами? – kleopatra

Смежные вопросы