Сортировать в отсортированном результате выборки Core Data? - PullRequest
4 голосов
/ 10 апреля 2011

Итак, у меня есть следующий код, который сортирует выборку данных ядра по атрибуту «color».

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:YES];
sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

Есть ли способ получить результат такого рода, а теперь подсортировать по дате (другому атрибуту) внутри каждой цветовой "группы"?

В основном вот пример того, что я получаю сейчас ...

RED - 11/1/2010
RED - 9/8/2010
RED - 11/9/2011
RED - 10/20/2011
GREEN - 11/1/2010
GREEN - 9/8/2010
GREEN - 11/9/2011
BLUE - 10/20/2011
BLUE - 11/1/2010
BLUE - 9/8/2010

А вот как бы я хотел, чтобы результаты выглядели ...

RED - 9/8/2010
RED - 11/1/2010
RED - 10/20/2011
RED - 11/9/2011
GREEN - 9/8/2010
GREEN - 11/1/2010
GREEN - 11/9/2011
BLUE - 9/8/2010
BLUE - 11/1/2010
BLUE - 10/20/2011

Я уверен, что это можно сделать, но я просто не уверен, как это сделать.

1 Ответ

10 голосов
/ 10 апреля 2011

Когда вы вызываете SetSortDescriptors, пропустите массив всех NSSortDescriptors, по которым вы хотите отсортировать.В вашем примере вы создали только один дескриптор сортировки и добавили только один в массив дескрипторов сортировки.Создайте второй NSSortDescriptor для поля даты, а также добавьте его в массив дескрипторов сортировки.Они применяются к набору данных в том порядке, в котором они находятся в вашем массиве.См. Описание ниже в документации Apple.

Что-то подобное должно работать:

NSSortDescriptor *colorSort = [[NSSortDescriptor alloc] initWithKey:@"color" ascending:asc selector:nil];
NSSortDescriptor *dateSort = [[NSSortDescriptor alloc] initWithKey:@"date" ascending:asc selector:nil];
NSArray *sortDescriptors = [NSArray arrayWithObjects:colorSort, dateSort, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

См. Эти ссылки: https://developer.apple.com/library/ios/documentation/Cocoa/Reference/CoreDataFramework/Classes/NSFetchRequest_Class/NSFetchRequest.html

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSSortDescriptor_Class/Reference/Reference.html

Устанавливает массив дескрипторов сортировки получателя.- (void) setSortDescriptors: (NSArray *) sortDescriptors

sortDescriptors - дескрипторы сортировки определяют порядок упорядочения объектов, возвращаемых при выдаче запроса на выборку, например по фамилии, а затем по имени.Дескрипторы сортировки применяются в том порядке, в котором они появляются в массиве sortDescriptors (последовательно в порядке убывания индекса первого массива).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...