core-data - 核心数据: Many-to-many Predicate NOT not working

标签 core-data ios6 nspredicate

我正在尝试创建一个谓词来过滤多对多关系。我有一个消息对象,其中有许多标签作为关系。

我可以执行以下操作:

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"ANY labels.labelId == 4"];

我只会收到带有 labelId 4 的标签的消息。但是如果我这样做

fetchRequest.predicate = [NSPredicate predicateWithFormat:@"NONE labels.labelId == 4"];

这将为我提供我拥有的每一个 Message 对象,即使它们与 labelId 4 的 Label 存在关系。为什么会这样?有人可以帮忙吗?

最佳答案

似乎“NONE”或“NOT ANY”在核心数据谓词中没有按预期工作。两个谓词

 NONE labels.labelId == 4
 NOT (ANY labels.labelId == 4)

实际上返回相同的结果

 ANY labels.labelId != 4

这不是我理解文档的方式。作为解决方法,您可以使用 SUBQUERY:

[NSPredicate predicateWithFormat:@"SUBQUERY(labels, $x, $x.labelId == 4).@count == 0"]

关于core-data - 核心数据: Many-to-many Predicate NOT not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998807/

相关文章:

ios - 使用 beginBackgroundTaskWithExpirationHandler 删除过时的核心数据记录是否安全?

ios - 如何在核心数据 SWIFT 上保存图像

iphone - 将导入的数据保存到核心数据 - 无法读回

ios - 自动布局中的比例距离约束

ios - RKResponseDescriptor 与 RKRouter

一对多的 iOS Core 数据谓词

ios - 多个 NSManagedObjectContext 或传递它?

iphone - vuforia 和 uinavigationcontroller

ios - 具有多个条件的 UITableView filteredArrayUsingPredicate?

ios NSPredicate 在 NSDictionary 中查找最接近的值