我有4个实体。 ArticleGroup,Article,WarehouseStok,Warehouse。
我需要获取articleGroups,这些articleGroups包含属于仓库(单一)的warehouseStocks(NSSet)的文章(NSSet)。
request.predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(articles, $a, SUBQUERY($a.warehouseStocks, $y, $y.warehouse == %@))", warehouse];
我收到了这个错误:
* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法解析格式字符串“SUBQUERY(文章,$ a,SUBQUERY($ a.warehouseStocks,$ y,$ y) .warehouse ==%@))“'
如何构建这样的谓词?它有可能吗?
答案 0 :(得分:7)
SUBQUERY返回匹配对象的集。 谓词必须返回 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];