我有3个实体,“Bar”、“Waiter”、“Product”的关系如下, “Bar”与“Waiter”具有一对多关系,从 Waiter 到 Product 也是如此。
我有一组在酒吧工作的服务员,我想根据他们是否提供某种产品来过滤服务员。
我试图过滤酒吧中所有服务员的数组,[bar.toWaiter allObjects]
到目前为止我已经尝试过:
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"toProduct.endSaleDate > %@ AND toProduct.published == YES", [NSDate date]];
和
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"ANY toProduct.endSaleDate > %@ AND ANY toProduct.published == YES", [NSDate date]];
我只想要那些拥有“发布”到 YES 和 endSaleDate 的 Product 的服务员。我得到的是已发布产品或具有 future 日期的产品的服务员。
我怎样才能实现我想要的目标。
谢谢!
最佳答案
似乎谓词被解释为“给我有任何已发布产品和任何具有 future 日期的产品的服务员”。但它并不要求相同产品满足两个条件。
您可以使用 SUBQUERY以确保:
[NSPredicate predicateWithFormat:"@"SUBQUERY(toProduct, $product, $product.published == 1 AND $product.endSaleDate > %@).@count > 0"];
关于ios - 过滤具有一对一关系的NSmanagedObject的NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070856/