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

时间:2013-10-04 03:59:56

标签: core-data nspredicate

昨天我asked a question关于多对多关系:

  

我有两个与多对多关系相关的实体:

     

Database <<----->> Category

     

换句话说,数据库可以有许多类别,类别可以   与许多数据库相关联。

     

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

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

我想要一个NSPredicate,它将返回与给定Database对象无关的所有Category对象。

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

任何帮助非常感谢。提前谢谢!

2 个答案:

答案 0 :(得分:2)

似乎是一个核心数据错误,“没有任何”查询无法正常工作 (有关类似问题,请参阅Core Data NSPredicate with to-Many Relationship。)

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

[NSPredicate predicateWithFormat:@"SUBQUERY(databases, $db, $db == %@).@count == 0", theDatabase]

答案 1 :(得分:0)

尝试使用:

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

或者

[NSPredicate predicateWithFormat:@"NOT(%@ IN databases)", database]