NSPredicate与键值收集运算符

时间:2011-09-10 16:15:45

标签: iphone subquery nspredicate

我有一个核心数据模型如下 1.任务实体:属性objDueDate,关系objRecurrence等。 2.重复实体:属性objEndDate,objStartDate,关系任务等。

任务与重复具有多对一关系。重复与Task具有相反的一对多关系。我希望通过编写NSFetchRequest谓词来查询递归序列的最后一个任务,如下所示

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

此操作失败并显示错误

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法为谓词生成SQL(objDueDate == max:(objRecurrence.tasks.objDueDate))

任何人都可以解释为什么这不起作用?

提前致谢....

场景说明:

我希望显示按类别排序的任务。我还强制要求,如果您将任务重复出现,则重复中的所有任务将共享相同的类别。现在有两组任务:一组有重复,一组没有重复。现在出现了一个递归序列(比如说A)我只希望向用户呈现一个任务。如果序列中的所有任务都已标记为已完成,那么我希望将最后完成的任务呈现给用户。如果序列中的某些任务已标记为已完成,那么我希望向用户显示第一个不完整的任务。

如何解决方案???

2 个答案:

答案 0 :(得分:0)

我有一个简化的想法,可避免此错误:获取按dueDate排序的一次重复的任务,并将fetchLimit设置为1。

答案 1 :(得分:0)

我不确定为什么你在谓词中同时使用objRecurrence和tasks。如果它们彼此相反,那么您只需要遍历任务实体关系(objRecurrence)。这可能会解决您的问题。