Core data 核心数据多对多谓词(再次)

Core data 核心数据多对多谓词(再次),core-data,nspredicate,Core Data,Nspredicate,昨天我谈到了一种多对多的关系: 我有两个实体,它们通过多对多关系相互关联: 数据库类别 换句话说,一个数据库可以有许多类别,而一个类别可以 可以与许多数据库关联 我需要一个NSPredicate,它将返回所有关联的类别对象 使用给定的数据库对象 …并收到了一些非常有用的建议。我现在想问一个不同但相关的问题: 我想要一个NSPredicate,它将返回与给定数据库对象不关联的所有类别对象 我需要它作为谓词,因为它被用作获取结果控制器的一部分 非常感谢您的帮助。提前谢谢 尝试使用: [NSPredi

昨天我谈到了一种多对多的关系:

我有两个实体,它们通过多对多关系相互关联:

数据库类别

换句话说,一个数据库可以有许多类别,而一个类别可以 可以与许多数据库关联

我需要一个NSPredicate,它将返回所有关联的类别对象 使用给定的数据库对象

…并收到了一些非常有用的建议。我现在想问一个不同但相关的问题:

我想要一个NSPredicate,它将返回与给定数据库对象不关联的所有类别对象

我需要它作为谓词,因为它被用作获取结果控制器的一部分

非常感谢您的帮助。提前谢谢

尝试使用:

[NSPredicate predicateWithFormat:@"NOT (ANY databases = %@)", database];


“非任何”查询无法正常工作似乎是一个核心数据缺陷 (有关类似问题,请参阅)

作为一种变通方法,您可以将以下谓词与“子查询”一起使用:


不幸的是,这不起作用-它根本不返回任何内容(我知道有一些类别与它应该返回的数据库不相关)。很抱歉,仍然无法返回-两者都不返回对象。如果无法解决此问题,是否有更改数据模型的余地?数据模型本身设计良好,很有意义,所以我希望有一种方法来满足这个要求——理论上它似乎没有那么复杂?NSPredicate*谓词=[NSPredicate predicateWithFormat:@“parent!=%@”,self.parent];这不起作用嘿??不,它不起作用,因为这是一种对多关系,而不是一对一关系:
***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因是:“此处不允许对多个键”
,效果很好。感谢您指出错误并提供解决方法。
[NSPredicate predicateWithFormat:@"NOT(%@ IN databases)", database]
[NSPredicate predicateWithFormat:@"SUBQUERY(databases, $db, $db == %@).@count == 0", theDatabase]