【发布时间】:2019-06-09 16:08:18
【问题描述】:
假设我在 CoreData 中有 2 个 NSManagedObjects。
class House: NSManagedObject {}
class Location: NSManagedObject {}
我也有这样的数据模型structs:
struct HouseModel {
var objectID: NSManagedObjectID
...
}
sruct LocationModel {
var objectID: NSManagedObjectID
...
}
对于每个加载的managedObject,我基本上使用它的属性来初始化一个新的模型结构以用于 UI 和其他东西(主要是集合视图)
我必须在structs 中有NSManagedObjectID 属性才能更改结构所属的managedObject。 (我了解到我应该只使用mainViewContext 来阅读,而使用persistentContainer.performBackgroundTask 之类的东西来写作。因此,我需要NSManagedObjectID 将对象加载到后台队列中)
这是可行的,但这种方法存在问题:
如果没有managed object,我将无法初始化其中一个数据模型。当我想为 UI 测试或单元测试创建虚拟数据时,这很烦人。
我知道一种解决方案:创建一个只有一个实例的DummymanagedObject,然后使用它的 objectID 来处理类似的事情。但我真的不喜欢这个。有没有更好/更方便的方法?
我的意思是,我很想完全删除 objectID 属性以使 CoreData 与这些模型 structs 分开。但我看不出有办法做到这一点。我需要连接。
【问题讨论】: