CoreData 获取请求 NSPredicate 不起作用

Posted

技术标签:

【中文标题】CoreData 获取请求 NSPredicate 不起作用【英文标题】:CoreData fetch request NSPredicate not working 【发布时间】:2019-08-30 22:50:52 【问题描述】:

我已向我的 CoreData 模型中的实体添加了一个新的 bool 属性,并将现有数据迁移到新模型。我现在只想获取布尔值为false 的数据。我在 *** 上尝试了此处建议的所有内容,但找不到问题的答案。

我尝试了以下谓词:

let predicate = NSPredicate(format: "%K == %i", #keyPath(Tag.isWrite), false)
fetchRequest.predicate = predicate
let predicate = NSPredicate(format: "isWrite == 0")
fetchRequest.predicate = predicate
let predicate = NSPredicate(format: "isWrite == %@", NSNumber(value: false))
fetchRequest.predicate = predicate

迁移模型的默认值是false,对应isWrite。当我在显示我的数据之前不应用谓词并设置断点时,我可以清楚地看到isWrite 在调试器中为假。当我应用谓词时,我没有得到任何数据。

我错过了什么吗?

【问题讨论】:

我已经看到了以前的问题(我现在找不到)这意味着 CoreData 中存在一些问题,其属性名称以“is...”开头。可能值得为您的属性尝试不同的名称。 天哪,它有效!这是多么愚蠢。谢谢!将此作为答案发布,我会接受并给你一个upvote.. 【参考方案1】:

CoreData 中似乎存在以“is...”开头的属性名称的问题。尝试更改属性的名称。

【讨论】:

以上是关于CoreData 获取请求 NSPredicate 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

CoreData请求(Fetch Request)中断言(NSPredicate)使用的一个误区

NSPredicate 在获取请求中使用 @max 和其他条件

在 coredata 中过滤 Vs NSPredicate

如何通过 NSPredicate 过滤 Core Data 托管对象?

使用 Coredata 和 NSFetchRequest 进行“IN”搜索时如何格式化 NSPredicate

NSPredicate 在 CoreData 中按字母顺序获取记录