使用具有多个属性的SUBQUERY

时间:2015-01-27 16:35:02

标签: objective-c core-data

我有3个实体," Bar","服务员","产品"关系如下,A" Bar"与" Waiter"有一对多的关系。从服务员到产品也一样。

我需要知道哪些酒吧一直在为具有某些属性的产品提供服务。

Im获取的实体是Bars, 到目前为止,我已经尝试过:

[NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, ANY $x.toProduct.dateServed > %@ AND $x.toProduct.dateConsumed > %@).@count > 0), [NSDate date], [NSDate date]];

我得到的地方

  

在子查询表达式集合中只允许一个toMany / manyToMany关系

如果我尝试:

[NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, ANY $x.toProduct.dateServed > %@ ANY AND $x.toProduct.dateConsumed > %@).@count > 0), [NSDate date], [NSDate date]];

两个ANY,我得到同样的错误,

  

在子查询表达式集合中只允许一个toMany / manyToMany关系

哪个是子查询多个属性的正确方法?

感谢。

这是型号:enter image description here

1 个答案:

答案 0 :(得分:1)

您可以通过将两个SUBQUERY子句嵌套在一起来完成此操作:

NSPredicate *filter = [NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, SUBQUERY($x.toProduct, $y, $y.dateServed > %@ AND $y.dateConsumed > %@).@count > 0).@count > 0", [NSDate date], [NSDate date]];

或者,(模糊地)自然语言:“获取所有Bars的非零计数(Waiters,其中Products的非零计数{ {1}}和dateServed比今天更大))“。