1

两个模型类

AUser
- name

AGroup
- users 

组和用户共享多对多关系。

我想检查两组是否共享完全相同的用户(不是更多的用户或更少的用户)

但不幸的是,我收到以下错误:此处不允许使用多键

请注意,我查看了其他 SO 问题,但似乎没有一个适合,因为我在过去 2 小时内尝试使用他们的方法,但我无法让它发挥作用。或者至少我不太了解它们。

我的谓词也可以比较两个可变集吗?

- (BOOL)conversationExists:(NSMutableSet *)members {
    NSFetchRequest *request= [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"AGroup" inManagedObjectContext:_managedObjectContext];
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"users==%@",members]; 
    //There is more code that I have not shown here as it is irrelevant to the question
    //Mainly The NSPredicate line is the problem
}

非常感谢您的参与。对此,我真的非常感激。

来自, 新 iOS 程序员

4

2 回答 2

2

这篇文章有一个答案:How to use the "ALL" aggregate operation in a NSPredicate to filter a CoreData-based collection

基本上是这样的:

[NSPredicate predicateWithFormat:@"SUBQUERY(members, $member, $member IN %@).@count = %d", members, [members count]];
于 2013-03-07T02:11:45.620 回答
2

为什么它必须是谓词?

有什么问题[[groups valueForKey:@"users"] isEqualToSet:members]

于 2013-03-07T06:22:16.110 回答