Пользовательская сортировка с использованием категорий и основных данных - поддерживается ли она фреймворком? - PullRequest
4 голосов
/ 11 августа 2010

Я разрабатываю для iPhone iOS 4.0, и у меня есть список объектов дня рождения (дата + имя), хранящихся с использованием Core Data.Я хочу использовать NSFetchedResultsController для извлечения этого списка, отсортированного по дате рождения next каждого объекта дня рождения.Для этого мне нужно определить свою собственную логику для дескриптора сортировки.

Я попытался использовать:

[NSSortDescriptor sortDescriptorWithKey:@"birthdayDate" 
                              ascending:YES 
                               selector:@selector(compareNextBirthday:)];

Где compareNextBirthday: определено в категории, которую я создал в классе NSDate.

Но когда я пытаюсь получить данные, я получаю следующую ошибку: "неподдерживаемый селектор NSSortDescriptor: compareNextBirthday:"

Я потратил часы, пытаясь понять это без удачи ... Поддерживает ли Core Dataэтот вид кастомной сортировки вообще?Мне действительно нужно делать сортировку в памяти?

1 Ответ

7 голосов
/ 11 августа 2010

Сортировка внутри NSFetchedResultsController выполняется на уровне постоянного хранилища, поэтому, если вы используете SQLite в качестве бэкэнда, это не удастся.

Для чего-то подобного я бы нормализовал данные и сохранил месяц и день месяца в дополнение к фактической дате рождения, чтобы вы могли отсортировать их.

...