ios - 过滤具有一对一关系的NSmanagedObject的NSArray

标签 ios objective-c nspredicate nsmanagedobject

我有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 日期的产品的服务员。

我怎样才能实现我想要的目标。

谢谢!

enter image description here

最佳答案

似乎谓词被解释为“给我有任何已发布产品和任何具有 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/

相关文章:

ios - Swift/如何通过valueForKey获取核心数据项

iphone - 如何将 xcode 4.1 iPhone 应用程序转换为通用应用程序

iOS touchesMoved 第一次和第二次通话之间的延迟

ios - 可转换对象上的 CoreData NSPredicate 导致 EXC_BAD_ACCESS

ios - UICollectionView 中多个不同的 Admob 横幅广告

ios - Twilio iOS SDK 在去电时失败并显示 "400 Bad request"

ios - 导航栏的标题 View 重叠

objective-c - 使用 iOS Dropbox SDK 分块上传核心数据

iPhone SDK : How to check for IP-Validity?

ios - 日期比较 NSPredicate