这是我的table.For的结构一些特定的联系人(不是“类型”的值)一些联系人被添加到成员中。我想要一个组的查询,它显示了所有的联系人(组对象),这不在它的members.Following查询给出所有的成员,在它的成员[NSPredicate predicateWithFormat:@"(members CONTAINS %@)",currentGroup]
我尝试[NSPredicate predicateWithFormat:@"NOT (members CONTAINS %@)",currentGroup]
但没那么走运
发布于 2014-02-13 19:42:00
要通过“currentGroup
”关系获取与成员无关的所有组,您需要一个带有SUBQUERY的谓词:
[NSPredicate predicateWithFormat:@"SUBQUERY(members, $m, $m == %@).@count == 0", currentGroup]
(原因是“不是任何...”不能正常工作,这似乎是核心数据错误)。
但请注意,您已经将“成员”关系定义为与其本身相反的关系,这意味着它是对称的:"A是B的成员“意味着"B是A的成员”。
如果没有缩进,则需要两个单独的关系:一个是对多关系"members",另一个是反向关系"memberOf",可以是一对多或多对多(取决于一个组是否可以是多个组的成员)。
然后,您必须使用反向关系来获取不是当前组成员的所有组。如果反向关系是对多对多,那就是
[NSPredicate predicateWithFormat:@"SUBQUERY(memberOf, $m, $m == %@).@count == 0", currentGroup]
如果反向关系是一对一,那么只需
[NSPredicate predicateWithFormat:@"memberOf != %@", currentGroup]
https://stackoverflow.com/questions/21746212
复制