Ios 要按子实体属性筛选的核心数据谓词

Ios 要按子实体属性筛选的核心数据谓词,ios,core-data,subquery,nspredicate,nsfetchedresultscontroller,Ios,Core Data,Subquery,Nspredicate,Nsfetchedresultscontroller,我一直在寻找这个,但我没有发现任何东西,我认为核心数据不支持它。不管怎样,让我们看看: 我有3个实体:Ticket、TicketLine和CheffLine 现在我想获取票证(通过NSFetchedResultsController),但要过滤至少有一个CheffLine的票证,cheffStatus大于0。问题是cheffStatus是CheffLine实体的一个属性,因此我做了以下谓词: [NSPredicate predicateWithFormat:@"0 != SUBQUERY(li

我一直在寻找这个,但我没有发现任何东西,我认为核心数据不支持它。不管怎样,让我们看看:

我有3个实体:
Ticket
TicketLine
CheffLine

现在我想获取票证(通过
NSFetchedResultsController
),但要过滤至少有一个CheffLine的票证,cheffStatus大于0。问题是
cheffStatus
CheffLine
实体的一个属性,因此我做了以下谓词:

[NSPredicate predicateWithFormat:@"0 != SUBQUERY(lines, $x, $x.cheffStatus > 0).@count)"];
但当执行时,我会得到以下错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法为谓词(0!=子查询(行,$x,$x.cheffStatus>0)生成SQL)。@count(RHS上的问题)”

我注意到,如果使用TicketLineEntity中的
$x.someVariableInTicketLineEntity
而不是
$x.cheffStatus
来完成查询,它会工作。我也尝试使用CAST,但得到了相同的结果

[NSPredicate predicateWithFormat:@"0 != SUBQUERY(lines, $x, CAST($x, 'CheffLine').cheffStatus > 0).@count)"];

有什么方法可以做这个查询吗?请记住,它必须在
NSFetchedResultsController中工作

好的,我发现没有解决方案。看看这个:


方法是在两个单独的请求中获取结果,然后手动合并,因此忘记NSFetchedResultsController。

我没有看到任何解决方案,因此我将通过将获取请求更改为直接获取CheffLine对象来解决此问题,然后在NSFetchedResultsController委托函数中做所有的艰苦工作。在本例中,它是有效的,但现在我在CheffLine的其他子实体中遇到了另一个类似的问题。我认为最好的办法是在核心数据中不使用子实体,这在目前对我来说是不可能的。