我一直在寻找这个,但我一无所获,我认为它不受Core Data的支持。无论如何,让我们看看它:
我有3个实体:Ticket
,TicketLine
和CheffLine
。
现在我想要获取门票(通过NSFetchedResultsController
),但过滤至少有一个cheffStatus
大于0 的CheffLine的门票。问题是cheffStatus
是CheffLine
实体的属性,因此我创建了这个谓词:
[NSPredicate predicateWithFormat:@"0 != SUBQUERY(lines, $x, $x.cheffStatus > 0).@count)"];
但是当执行时,我收到了这个错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法为谓词生成SQL(0!= SUBQUERY(行,$ x,$ x.cheffStatus> 0)。@ count)(RHS上的问题) “
我注意到,如果使用$x.someVariableInTheTicketLineEntity
代替$x.cheffStatus
完成查询,则可以正常运行。我也尝试使用CAST,但获得了相同的结果
[NSPredicate predicateWithFormat:@"0 != SUBQUERY(lines, $x, CAST($x, 'CheffLine').cheffStatus > 0).@count)"];
有没有办法进行此查询?请记住,它必须在NSFetchedResultsController
内完成。
答案 0 :(得分:4)
好的,我发现没有解决办法。看看这个:
How can you reference child entity name in a predicate for a fetch request of the parent entity?
要做的是在2个单独的请求中获取结果然后手动合并,所以忘记NSFetchedResultsController。