Сортировка объектов базовых данных по трансформируемому атрибуту с помощью NSFetchedResultsController - PullRequest
0 голосов
/ 04 апреля 2011

Я отображаю объекты, хранящиеся в Базовых данных, в UITableView, и у меня возникают проблемы с сортировкой этих объектов по одному из преобразуемых атрибутов объекта.Я должен отметить, что я использую NSFetchedResultsController в качестве контроллера между хранилищем основных данных и моим табличным представлением.Когда я просто использовал массив для хранения всех своих объектов, я мог сортировать их без каких-либо проблем.Я использую FRC, потому что мне нужны данные, сгруппированные по разделам с заголовками разделов, а FRC делает это очень просто.

Давайте назовем эти объекты Я сортирую объекты «Измерения».Каждый объект измерения имеет атрибут расстояния.Этот атрибут расстояния имеет пользовательский класс EPHDistance, поэтому он настроен в модели Базовые данные как Преобразуемый атрибут.

Короче говоря, сортировка объектов Измерений по их расстоянию делает работает, но только после того, как я отредактировал объект, который хранится в Core Data, или если я добавлю новый объект в хранилище.После редактирования магазина и возврата к моей таблице, в которой перечислены все объекты измерений по порядку, все отлично работает.Это просто начальный запуск и просмотр табличного представления, где объекты не отсортированы должным образом.Я фактически поместил оператор NSLog в мой EPPDistance -compare: метод, и он не вызывается при сортировке объектов, пока я не добавлю / отредактирую объект в хранилище Core Data.Для чего это стоит, если я сортирую тезисы Объекты измерений по их атрибуту «date», который является NSDate, он отлично работает прямо за воротами.

Я не очень опытен с Core Data, и этомоя первая реальная попытка использования NSFetchedResultsController, так что я немного сбит с толку этим.Любой вклад будет принят с благодарностью.

Большое спасибо, Эрик

1 Ответ

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

Вы можете создать необязательный метод в вашем Measurement вызове класса -(NSString*)distanceCompareString, который возвращает строку, которая поможет вам отсортировать объект EPHDistance.В вашем NSSortDescriptor вы просто используете distanceCompareString в качестве ключа сортировки.

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