2013-02-19 2 views
0

Я получаю имена пола и хранения в _floorNames (NSMutableArray) с помощьюСортировка NsMutable Массив

_floorNames=[conferenceHall floorDetails:office]; 


NSLog(@"floor names=%@",_floorNames); 

Это будет печатать имена пола, как это.

GROUND, 
THIRD, 
FIRST, 
SECOND 

Теперь я хочу, чтобы отсортировать, что имена пола NSMutableArray в

GROUND, 
FIRST, 
SECOND, 
THIRD 

Я использовал

NSSortDescriptor *aa=[[NSSortDescriptor alloc]initWithKey:floor ascending:YES               selector:@selector(localizedCaseInsensitiveCompare:)]; 

NSArray *descriptors = [NSArray arrayWithObjects:aa, nil]; 
    a = [array sortedArrayUsingDescriptors:descriptors]; 

Но это разобьет мое приложение. Любые предложения ...

+0

Предложения: # 1: не используйте Xcode тег, это неуместно. # 2: отформатируйте свой код, его невозможно прочитать. # 3: задайте реальный вопрос - я не мог вывести то, что вы ожидаете, и что на самом деле происходит. – 2013-02-19 06:21:52

+0

My floorNames mutableArray содержит имена наподобие GROUND, ТРЕТЬЕ, ПЕРВЫЙ, ВТОРОЙ. Как отсортировать этот mutableArray, чтобы получить ЗЕМЛЯ, ПЕРВЫЙ, ВТОРОЙ, ТРЕТИЙ. – user2043033

ответ

0

Что вы хотите, вы никогда не получите !!!

«ЗЕМЛЯ, ТРЕТЬЕ, ПЕРВЫЙ, ВТОРОЙ» на «ЗЕМЛЯ, ПЕРВЫЙ, ВТОРОЙ, ТРЕТИЙ» - это то, что вы хотите.

Ни один алгоритм не может сортировать эти строки на основе их внутреннего представления в цифрах. Это что-то вроде: 0..1..2..3. Вы хотите отсортировать эти целые числа, написанные на английском языке. Сортировка может быть выполнена в алфавитном порядке, чтобы ваш результат был таким же, как First, Groung, Second, Third.

Как достичь?

Вам необходимо создать объект словаря с отображенным значением от третьего до 3, вторым по 2, массой до 0. Затем отсортируйте эти числовые значения. А затем получите Keys на основе значений (0,1,2cc).

4

Попробуйте это,

NSArray *arrFloorNames=[[NSArray alloc]initWithObjects:@"GROUND",@"THIRD",@"FIRST",@"SECOND", nil]; 
arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
NSLog(@"%@",arrFloorNames); 
+0

arrFloorNames = [arrFloorNames sortedArrayUsingSelector: @selector (localizedCaseInsensitiveCompare :)); NSLog (@ "% @", arrFloorNames); Используя это, я получаю плохой доступ в своем приложении. – user2043033

+0

sample hardcode проверить этот код - (void) viewDidLoad метод – Ravindhiran

+0

@ user2043033: Как этот код сортируется согласно вашему требованию. Пожалуйста, дайте мне знать. –

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