我一直在努力寻找这个问题的好答案:
如何将NSManagedObjects作为MVVM中的模型处理?
我尝试过几种不同的方法:
NSManagedObject
的副本 - 虽然这对我来说似乎有点危险,但有潜在的线程问题NSManagedObject
方法将-initWithModel:
打包到我在VM上实际使用的属性中 - 这意味着我在初始初始化后不再收到NSManagedObject
的任何更新NSManagedObject
NSManagedObjectID
的副本,并专门为每个ViewModel实例使用NSManagedObjectContext
来检索和监控私有NSManagedObject
及其属性 - 这对每个ViewModel实例(并且可能非常脆弱)执行此操作似乎有点沉重这些似乎都不理想。我脑子里有一个想法,最好通过NSManagedObject
将初始-initWithModel:
实例中的传递结合起来,但只保留NSManagedObjectID
,然后监听核心数据保存通知和除草任何与保留的对象ID无关的任何内容。
答案 0 :(得分:2)
我会做什么,我不知道这是否是最好的做法,是传递模型,然后将视图模型的属性绑定到模型上的(可能映射的)属性。这样您就可以通过视图模型获得更新。它确实对线程问题保持一定的开放性,但您可以使用deliverOn:
来确保始终在主调度程序上提供更新。