这是我的表的结构。对于某些特定的联系人(取决于'type'的值),一些联系人被添加到成员中。
我想查询一个组,该组显示不在其成员中的所有联系人(组对象)。以下查询给出其成员中的所有成员
[NSPredicate predicateWithFormat:@"(members CONTAINS %@)",currentGroup]
我试过了
[NSPredicate predicateWithFormat:@"NOT (members CONTAINS %@)",currentGroup]
但没有运气
答案 0 :(得分:0)
通过“成员”关系获取与currentGroup
无关的所有群组,
你需要一个带有SUBQUERY的谓词:
[NSPredicate predicateWithFormat:@"SUBQUERY(members, $m, $m == %@).@count == 0", currentGroup]
(原因是“NOT ANY ...”无法正常工作,这似乎是一个核心数据错误。)
但请注意,您已将“成员”关系定义为与其自身的反向关系,这意味着它是对称的:“A是B的成员”意味着“B是A的成员”。
如果没有缩进,则需要两个单独的关系:一对多关系“成员”和一个反向关系“memberOf”,可以是一对一或多对(取决于一个组是否可以多个团体的成员或不。)
然后你必须使用反向关系来获取所有不是的组 当前小组的成员。如果反比关系是多 - 那将是
[NSPredicate predicateWithFormat:@"SUBQUERY(memberOf, $m, $m == %@).@count == 0", currentGroup]
如果反比关系是-1,则只需
[NSPredicate predicateWithFormat:@"memberOf != %@", currentGroup]