A
。b
和B
。a
与多种关系相反。为什么A
的这个谓词起作用:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a];
虽然这个没有:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject];
我认为两个谓词都应该给出相同的结果 - A
的集合与bObject
通过a<-->b
无关。但实际上,第一个给出正确的集合,而第二个没有。
更新
以下为sample project,其中A
。b
由Account
。filtered_clients
和B
体现。a
是体现在Client
。filtered_by
。
切换MasterViewController.m
中第143行和第144行的注释以查看差异。
请帮我找到我的代码中的错误,或者确认它是Core Data
错误,以便我可以向Apple报告。非常感谢。
答案 0 :(得分:3)
这是另一个想法:也许它试图用bObject
“否定”NOT
。因此,请尝试:
@"NOT (%@ IN b)"
答案 1 :(得分:0)
来自文档:
重要您必须在两者中定义多对多关系 方向 - 也就是说,你必须指定两个关系,每个关系都是 另一个的倒数。你不能只定义一个多对多的关系 一个方向,并尝试将其用作多对多。如果你这样做,你会的 结束参考完整性问题。
所以检查一下:
答案 2 :(得分:0)
我想我找到了遇到这个问题的人的答案。显然你确实需要使用SELF来工作,至少在我的情况下有两对多的关系。这对我有用:
NOT (SELF IN %@)