为什么“不在”在这个NSPredicate中不起作用?
A
b
和B
a
是相反的多关系。 为什么这个A
工作的预言:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a];
而这一个不会:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject];
我认为两个谓词都应该给出相同的结果 - 通过a<-->b
与bObject
没有任何关系的A
的集合。 但事实上,第一个是正确的收集,而第二个是没有的。
更新:
这里是一个示例项目,其中A
b
由Account
体现。 filtered_clients
和B
a
由Client
体现。 filtered_by
。
在MasterViewController.m
切换143行和144行的注释以查看差异。
请帮我找到我的代码中的错误,或者确认它是一个Core Data
错误,以便我可以将其报告给Apple。 非常感谢。
这里有另一个想法:也许它试图用NOT
来“否定” bObject
。 因此,请尝试:
@"NOT (%@ IN b)"
从文档:
重要你必须在两个方向上定义多对多关系 - 也就是说,你必须指定两个关系,每个关系与另一个关系相反。 你不能只在一个方向上定义多对多关系,并尝试将它用作多对多关系。 如果这样做,最终会遇到参照完整性问题。
所以检查一下:
我想我找到了解决这个问题的人的答案。 显然你需要使用SELF来工作,至少在我的情况下是两对多的关系。 这适用于我:
NOT (SELF IN %@)
链接地址: http://www.djcxy.com/p/10401.html