为什么"NOT IN"在这个NSPredicate中不起作用?

an0*_*an0 7 core-data nspredicate ios

A.bB.a与许多关系相反.为什么这个谓词A起作用:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT SELF IN %@", bObject.a];
Run Code Online (Sandbox Code Playgroud)

虽然这个没有:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT %@ IN b", bObject];
Run Code Online (Sandbox Code Playgroud)

我认为两个谓词都应该给出相同的结果 - AbObjectvia 无关的s 的集合a<-->b.但事实上,第一个给出正确的集合,而第二个没有.

更新:


这是一个示例项目,其中A.b体现在Account.filtered_clientsB.a体现在Client.filtered_by.

切换第143行和第144行的注释MasterViewController.m以查看差异.

请帮我找到我的代码中的错误,或确认它是一个Core Data错误,以便我可以向Apple报告.非常感谢.

Mun*_*ndi 0

从文档中:

\n\n
\n

重要 您必须在两个方向\xe2\x80\x94 上定义多对多关系,也就是说,您必须指定两个关系,每个关系\n 都是另一个关系的倒数。您可以\xe2\x80\x99t 仅在一个方向定义一对多关系并尝试将其用作多对多关系。如果这样做,您将最终遇到引用完整性问题。

\n
\n\n

所以检查一下:

\n\n
    \n
  1. A 与 B 存在一对多关系。
  2. \n
  3. B 与 A 存在一对多关系。
  4. \n
  5. A关系是B关系的逆关系。
  6. \n
  7. B关系是A关系的逆关系。
  8. \n
\n