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 和其他条件
如何通过 NSPredicate 过滤 Core Data 托管对象?