具有多对多关系的核心数据 NSPredicate
Posted
技术标签:
【中文标题】具有多对多关系的核心数据 NSPredicate【英文标题】:Core Data NSPredicate with to-Many Relationship 【发布时间】:2013-03-30 20:03:15 【问题描述】:我在 CoreData 中有两个实体,分别称为 User 和 Coupon,它们是多对多关系。我想获取除 user.userId = 1 拥有的所有优惠券之外的所有优惠券,其中 userId 是 NSString。
我用过:
[NSPredicate predicateWithFormat:@"NOT(ANY couponOwners.userId = %@)", @"4"];
成为我的 fetchedResultsController 的谓词
但没有过滤出正确的结果。 Coupon 的 couponOwners 中的一位用户的 userId = 4。
有人可以帮忙吗?我已经被困了很长一段时间。提前致谢。
【问题讨论】:
【参考方案1】:带有“NOT ANY”的核心数据谓词不起作用(这似乎是核心数据错误)。其实
[NSPredicate predicateWithFormat:@"NOT(ANY couponOwners.userId = %@)", @"4"];
返回与
相同的结果集[NSPredicate predicateWithFormat:@"ANY couponOwners.userId != %@", @"4"];
这当然是错误的。作为一种解决方法,您可以使用 SUBQUERY:
[NSPredicate predicateWithFormat:@"SUBQUERY(couponOwners, $c, $c.userId == %@).@count == 0", @"4"]
【讨论】:
你真聪明。非常感谢。 @Martin R,我在形成正确的谓词时遇到问题,因为我看到你非常了解这个领域,你能帮忙解决这个问题吗? ***.com/questions/37464898/…?以上是关于具有多对多关系的核心数据 NSPredicate的主要内容,如果未能解决你的问题,请参考以下文章
从具有多对多关系核心数据iOS的上下文中删除nsmanagedboject