过滤具有一对一关系的NSmanagedObject的NSArray
Filtering NSArray of NSmanagedObject with one-to-may relationship
我有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]];
我只想要那些拥有 "published" 为 YES 和 endSaleDate 的 Product 的服务员。我得到的是已发布产品或具有未来日期的产品的服务员。
我怎样才能实现我想要的。
谢谢!
谓词好像解释为"give me waiters which have ANY published product and ANY product with a future date"。但它并不要求相同产品满足两个条件。
您可以使用 SUBQUERY 来确保:
[NSPredicate predicateWithFormat:"@"SUBQUERY(toProduct, $product, $product.published == 1 AND $product.endSaleDate > %@).@count > 0"];
我有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]];
我只想要那些拥有 "published" 为 YES 和 endSaleDate 的 Product 的服务员。我得到的是已发布产品或具有未来日期的产品的服务员。
我怎样才能实现我想要的。
谢谢!
谓词好像解释为"give me waiters which have ANY published product and ANY product with a future date"。但它并不要求相同产品满足两个条件。
您可以使用 SUBQUERY 来确保:
[NSPredicate predicateWithFormat:"@"SUBQUERY(toProduct, $product, $product.published == 1 AND $product.endSaleDate > %@).@count > 0"];