具有一对多关系的复杂核心数据谓词
Posted
技术标签:
【中文标题】具有一对多关系的复杂核心数据谓词【英文标题】:Complex Core Data predicate with to-many relations 【发布时间】:2014-02-01 15:15:21 【问题描述】:我有 4 个实体。 ArticleGroup, Article, WarehouseStok, Warehouse。
我需要获取 articleGroups 的文章(NSSet)属于仓库Stocks(NSSet)属于仓库(单个)。
request.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, SUBQUERY($a.warehouseStocks, $y, $y.warehouse == %@))", warehouse];
我收到了这个错误:
* 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'无法解析格式字符串 "SUBQUERY(articles, $a, SUBQUERY($a.warehouseStocks, $y, $y .warehouse == %@))"'
如何构造这样的谓词?有可能吗?
【问题讨论】:
【参考方案1】:一个子查询返回一个匹配对象的集合。 谓词必须返回true或false,例如“SUBQUERY(...).@count > 0”。
你的情况是:
[NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, SUBQUERY($a.warehouseStocks, $y, $y.warehouse == %@).@count > 0).@count > 0", warehouse];
但我认为您可以将谓词简化为(未经测试):
[NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, ANY $a.warehouseStocks.warehouse == %@).@count > 0", warehouse];
【讨论】:
以上是关于具有一对多关系的复杂核心数据谓词的主要内容,如果未能解决你的问题,请参考以下文章