2012-06-20 2 views
2

Я пытаюсь получить сущность с наименьшим количеством в одном из ее отношений. Сущность называется Solution, и у нее есть отношение to-many, называемое gamesFeaturedIn, которое связано с объектом Game. Поэтому я делаю это (используя удобные методы RestKit):Исходные данные ядра: Сортировка по количеству отношений

Solution* lowestPlayedSolution = [Solution findFirstWithPredicate: nil sortedBy: @"[email protected]" ascending: NO]; 
NSUInteger lowestPlayedCount = [lowestPlayedSolution.gamesFeaturedIn count]; 

это бросает ошибку:

'Keypath containing KVC aggregate where there shouldn't be one; failed to handle [email protected]'

Я нашел несколько постов с подобными вопросами несколько лет назад. Возможно, все изменилось, и старые сообщения не дают никаких определенных ответов на то, как я могу это сделать, не загружая все объекты в память и не выполняя вычисления вручную. Кто угодно?

EDIT: Ядро хранилище данных SQLite поддерживается, поэтому я не могу использовать свойства переходного процесса для сортировки.

ответ

1

Извините, что сломал вам плохие новости, но все не изменилось, по крайней мере, в iOS5. Есть в основном два обходных пути, оба довольно не изящные.

  1. Тот, о котором вы упомянули, выполняет сортировку впоследствии в памяти.
  2. Вы создаете свойство non-transient для хранения счета и обновления его каждый раз, когда вы добавляете или удаляете элемент в этой связи.
0

Создайте переходный атрибут (relationshipCount) и аксессор для этого атрибута, в котором вы возвращаете счетчик для этой связи. Теперь вы можете отсортировать этот атрибут.

+0

Извините, забыли сказать, что это поддерживаемый SQLite магазин. т.е.: невозможно сортировать по временному свойству. –