如何按不相关的实体过滤核心数据
Posted
技术标签:
【中文标题】如何按不相关的实体过滤核心数据【英文标题】:How to filter Core Data by entities not in relationship 【发布时间】:2013-11-04 22:24:19 【问题描述】:我有一个 NSManagedObject SchoolClass,它与学生有一个多对多的关系。当我想通过使用查找包含指定学生的 SchoolClasses 时,我可以使用它,
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(ANY students == %@)", student];
如何设置 NSPredicate 以返回不包含指定学生的 SchoolClasses 的 NSArray?我认为像下面这样的东西会起作用,但它不起作用。
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"(NONE students IN %@)", student];
【问题讨论】:
【参考方案1】:IN
在右侧是一个集合时使用,例如学生数组。试试这个谓词:
[NSPredicate predicateWithFormat:@"(NONE students = %@)", student];
这也等价于ALL students != %@
。
这将只返回不包括指定学生的 SchoolClasses。
【讨论】:
感谢您的回复。我相信它正确地回答了我提出的问题。我犯了为这个问题简化我的 NSPredicate 示例的错误,所以不幸的是,对于我更复杂的逻辑(我没有在这个问题中提出),它没有按预期工作。此外,如果我尝试,@"(ALL students != %@)"... 它会崩溃并显示“不支持的谓词(null)”消息。我将使用我试图过滤的完整 NSPredicate 逻辑打开另一个问题。以上是关于如何按不相关的实体过滤核心数据的主要内容,如果未能解决你的问题,请参考以下文章
从出现在 NSPopUpButton 列表中的核心数据实体中过滤条目