使用一对一关系过滤NSmanagedObject的NSArray

时间:2015-01-21 15:27:53

标签: ios objective-c nspredicate nsmanagedobject

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

我有一系列Waiters在Bar上工作,我想根据服务员是否服务某个产品来过滤服务员。

我试图过滤条形图中所有Waiters的数组,[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。我得到的是具有产品发布的产品或具有未来日期的产品。

我怎样才能实现我所寻找的目标。

谢谢!

enter image description here

1 个答案:

答案 0 :(得分:1)

似乎谓词被解释为“给我的服务员有任何已发布的产品和任何带有未来日期的产品”。但它并不要求相同的产品满足两个条件。

您可以使用SUBQUERY来确保:

[NSPredicate predicateWithFormat:"@"SUBQUERY(toProduct, $product, $product.published == 1 AND $product.endSaleDate > %@).@count > 0"];