Ios 为什么;不在「;在此NSPredicate中不起作用?
Ios 为什么;不在「;在此NSPredicate中不起作用?,ios,core-data,nspredicate,Ios,Core Data,Nspredicate,Ab和bA与许多关系相反。为什么A的谓词起作用: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a]; 而这一条没有: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject]; 我认为这两个谓词应该给出相同的结果-通过ab收集与bObject无关的As。但事实上
A
b
和b
A
与许多关系相反。为什么A
的谓词起作用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a];
而这一条没有:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject];
我认为这两个谓词应该给出相同的结果-通过ab
收集与bObject
无关的A
s。但事实上,第一个给出了正确的集合,而第二个没有
更新:
这里是一个示例,其中
a
b
由帐户过滤的\u客户机体现,b
由客户机过滤的体现
切换MasterViewController.m
中第143行和第144行的注释以查看差异
请帮助我在我的代码中找到bug,或者确认它是一个核心数据
bug,这样我就可以向苹果报告它了。非常感谢。来自文档:
重要信息:您必须在这两个方面定义多对多关系
方向也就是说,您必须指定两个关系,每个关系都是
与另一个相反。你不能只定义一对多的关系
一个方向,并尝试使用它作为多对多。如果你这样做,你会的
最终导致引用完整性问题
因此,请检查以下内容:
A和B有一对多的关系
B和a有一对多的关系
A关系与B关系相反
B关系是A关系的倒数李>
这里还有另一个想法:可能它试图用NOT
来“否定”bObject
。因此,请尝试:
@"NOT (%@ IN b)"
我想我找到了这个问题的答案。显然,你确实需要使用SELF来让它工作,至少在我的情况下是两对多关系。这对我很有用:
NOT (SELF IN %@)
您的第二个谓词似乎在测试b是否不在b中-这就是您的意思吗?正如Nick所指出的:您能给出更多的代码吗。b
变量是什么?如何生成获取请求?更清楚地说,我已经将变量名更改为“bObject”,这是B.A.B的一个实例,B.A与许多关系相反。这表明b a是多对多-对吗?嘿,伙计们,我创建了一个示例项目。请阅读有问题的更新。请阅读问题和下面的评论。当然,这是一种多对多的关系。我创建了一个示例项目。请阅读相关更新。