我在核心数据中有一个Category
实体,其中包含一个布尔属性deleted
。例如,保存了3个,deleted
设置为false
,1个true
。
当我运行一个简单的查询时:
let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Category")
fetchRequest.predicate = NSPredicate(format: "deleted == %@", NSNumber(booleanLiteral: false))
let results = try managedContext.fetch(fetchRequest) as! [NSManagedObject]
它正确地返回3,deleted
设置为false
。如果我反转谓词,它只会正确返回deleted
设置为true
的谓词。到目前为止,非常好。
但是,如果我使用NSPredicate(value: true)
运行它以获取所有存储的Category
个实体,然后打印结果,我会看到每个结果都有deleted = 0
属性。
显然,实际数据库有3个实体保存为false
,一个保存为true
,因为查询返回了预期的对象。那么返回的结果不能正确显示这些字段的原因是什么呢?