将 NSManagedObject 变成部分错误,其中一些字段为 nil 而有些则不是

Turn NSManagedObject into a partial fault where some fields are nil and some not

Apple 将故障描述为 partially materialised futures,这与多个数据库中使用的术语 partially materialised views 非常相似。部分一词对我来说意味着该对象的某些字段已初始化(实现),而有些则未初始化。但 Apple 将故障描述为:

A managed object fault is an instance of the appropriate class, but its persistent variables are not yet initialized.

有什么方法可以部分实现故障吗?例如。我有一个有 10 个字段的对象,我想要一个只实现两个字段的部分对象,而整个对象仍然是错误的(因此所有其他字段仍然为零)。我在这里不是在谈论 NSFetchRequestpropertiesToFetch,而是所谓的部分故障。 因为目前当故障被触发时所有的属性都会被实现。这是文档中的引述:

If you access a property on the Department object — its name, for example — the fault fires and Core Data executes a fetch for you to retrieve all of the object's attributes

如何自定义故障实现?

我不相信有办法做到这一点。当核心数据加载 managedObject 时,它会加载所有内容。您可以在 NSMangedObject 的界面中看到,它有一个 属性 of isFault,它要么是 true 要么是 false。

如果您有一个非常大的 属性(例如一团数据)并且不想加载它除非需要它,那么我建议将它存储为一个单独的实体一段关系。这样它只会在您请求 属性 时加载(出错)。