Дескриптор сортировки Core Data с компаратором

У меня есть модель объекта, например...

[Event]<--->>[Invite]<<--->[Person]

Я хотел бы создать NSSortDescriptor для этого, чтобы, если у Event есть какие-либо Invite, где Person равно данному человеку, тогда они будут первыми.

т. е. если есть 5 событий, и одно из них имеет приглашение для текущего пользователя (которого я передаю), то за событием с приглашением будут следовать остальные четыре.

На данный момент я просто показываю их в порядке date, но я хотел бы создать для этого NSSortDescriptor.

Я думаю, что он должен использовать sortDescriptorWithKey:ascending:comparator:, где я указываю компаратор, но какой ключ я должен использовать? invites?


person Fogmeister    schedule 15.07.2013    source источник
comment
Будет ли это работать с сущностями в памяти или в хранилище (ограничения SQL)?   -  person Wain    schedule 15.07.2013
comment
Хм... На самом деле я не уверен. Это первый раз, когда я использовал что-то большее, чем просто ключ для CoreData NSSortDescriptor. Я просто собирался добавить это в массив sortDescriptors запроса NSFetchedResultsController.   -  person Fogmeister    schedule 15.07.2013


Ответы (1)


Вы не можете использовать sortDescriptorWithKey:ascending:comparator: с FRC, потому что сортировка будет выполняться в SQL в самом хранилище, и нет возможности преобразовать блок в SQL. Вы также не можете использовать переходные переменные.

Я бы подумал о том, чтобы иметь 2 раздела для результатов (и, следовательно, 2 разных запроса на выборку с разными предикатами) и сортировать каждый по отдельности. Затем предикат имеет дело с информацией о пользователе, и сортировка проста (по дате, как она у вас есть в настоящее время).

person Wain    schedule 15.07.2013
comment
А, хорошо, я вижу. Попробую это. Спасибо. - person Fogmeister; 15.07.2013