复杂核心数据谓词与多对多关系

use*_*706 1 iphone core-data nspredicate ios

我有4个实体.ArticleGroup,Article,WarehouseStok,Warehouse.

我需要获取articleGroups,这些articleGroups包含属于仓库(单个)的warehouseStocks(NSSet)的文章(NSSet).

    request.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, SUBQUERY($a.warehouseStocks, $y, $y.warehouse == %@))", warehouse];
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

*由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'无法解析格式字符串"SUBQUERY(文章,$ a,SUBQUERY($ a.warehouseStocks,$ y,$ y.warehouse ==%@))"'

我如何构造这样的谓词?有可能吗?

Mar*_*n R 7

SUBQUERY返回一匹配的对象.一个谓语必须返回,如"SUBQUERY(...).@计数> 0".

在你的情况下,将是:

[NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, SUBQUERY($a.warehouseStocks, $y, $y.warehouse == %@).@count > 0).@count > 0", warehouse];
Run Code Online (Sandbox Code Playgroud)

但我认为您可以将谓词简化为(未经测试):

[NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, ANY $a.warehouseStocks.warehouse == %@).@count > 0", warehouse];
Run Code Online (Sandbox Code Playgroud)