NSPredicate с операторами сбора ключей и значений - PullRequest
0 голосов
/ 10 сентября 2011

У меня есть базовая модель данных следующим образом 1. Объект сущности: атрибуты objDueDate, отношение objRecurrence и т. Д. 2. Повторяющаяся сущность: атрибуты objEndDate, objStartDate, задачи отношений и т. Д.

Задание имеет отношение «много к одному» с повторением. Повторение имеет обратную связь один-ко-многим с Задачей. Я хочу запросить последнюю задачу последовательности повторений, написав предикат NSFetchRequest следующим образом

NSPredicate* lobjPredicate = [NSPredicate predicateWithFormat:"objDueDate == objRecurrence.tasks.@max.objDueDate"]

Это не с ошибкой, говорящей

Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Невозможно сгенерировать SQL для предиката (objDueDate == max: (objRecurrence.tasks.objDueDate))

Может кто-нибудь объяснить, почему это не работает?

Заранее спасибо ....

Объяснение сценария:

Я хочу отображать задачи, отсортированные по категориям. Я также обязываю вас, если вы делаете задачу повторяющейся, все задачи повторяемости будут принадлежать к одной категории. Теперь есть два набора задач: один с повторением и один без повторения. Теперь из повторяющейся последовательности (скажем, A) я хочу, чтобы пользователю была представлена ​​только одна задача. Если все задачи в последовательности помечены как выполненные, я хочу представить пользователю последнее выполненное задание. Если некоторые задачи в последовательности были помечены как выполненные, то я хотел бы представить первое незавершенное задание пользователю.

Как мне решить сценарий ???

Ответы [ 2 ]

0 голосов
/ 12 сентября 2011

Я не уверен, почему вы используете в предикате как objRecurrence, так и задачи.Если они обратны друг другу, вам просто нужно пройти через отношение Task Entity (objRecurrence).Это может решить вашу проблему.

0 голосов
/ 10 сентября 2011

У меня есть идея для упрощения, которое позволит избежать этой ошибки: выбрать задачи одного повторения, отсортированные по dueDate, и установить fetchLimit в единицу.

...