2015-04-02 3 views
0

У меня есть NSMutableArray объектов. Мне нужно отсортировать их на основе createdDate и имени. Ниже приведен сценарий, с которым я столкнулся: Имена файлов: Image.pdf, Изображение 1.pdf, Изображение 2.pdf, Изображение 3.pdf, Изображение 4.pdf, Изображение 5.pdf ...Использование NSSortDescriptor для сортировки объектов в NSMutableArray iOS?

Теперь эти файлы могут иметь одинаковый createdDate, поэтому, когда createdDate является таким же, он должен быть отсортирован по имени в порядке убывания. Таким образом, если файлы с надписью имеют такую ​​же дату создания, а затем после сортировки, она должна отображаться как: Изображение 5.pdf, Изображение 4.pdf, Изображение 3.pdf, Изображение 2.pdf, Изображение 1.pdf, Изображение.pdf, но когда я использую ниже код Image.pdf будет перемешано или отображаться как это: Image.pdf, изображения 5.pdf, изображения 4.pdf, изображения 3.pdf, изображения 3.pdf, 1.pdf Image

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"createdDate" ascending:NO selector:@selector(compare:)]; 
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO selector:@selector(localizedStandardCompare:)]; 
    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil]; 
    return sortDescriptors; 

ответ

0

у вас есть неправильная логика, я думаю, сначала вы должны проверить, что все файлы имеют ту же дату или нет, если они имеют одну и ту же дату, а затем сортировать по имени иначе сортировать по дате.

+0

Можете ли вы добавить больше информации о том, как это можно достичь. –

+0

Сначала вам нужно перефразировать свой вопрос и сделать его более читаемым и понять, поэтому я могу что-то предложить. – Retro

+0

Скажем, я получаю 3 файла даты 02-апр-2015 с именами: Image.pdf, Image 1.pdf, Image 3.pdf Порядок сортировки: Изображение 3.pdf, Изображение 1.pdf, Image.pdf Теперь я получаю 4 больше файлов даты 03-ape-2015 с именами: Изображение 7.pdf, Изображение 8.pdf, Изображение 9.pdf, Изображение 2.pdf Порядок сортировки: Изображение 9.pdf, Изображение 8.pdf, Изображение 7.pdf, Изображение2 .pdf, Изображение 3.pdf, Изображение 1.pdf, Image.pdf –

0

Строковое представление целых чисел дает неопределенное поведение, поэтому, когда вы сравниваете @"Image 1.pdf" < @"Image 2.pdf", будет иметь неопределенное поведение.

Что вы можете сделать, это попытаться сначала получить тот номер, который добавлен в «Изображение», а затем попытаться его отсортировать.