cocoa - 使用 MVVM 时处理 NSManagedObject

标签 cocoa core-data mvvm

有一段时间我一直在努力寻找一个好的答案:

如何将 NSManagedObjects 作为 MVVM 中的模型来处理?

我尝试了几种不同的方法:

  • 在 ViewModel 上保留 NSManagedObject 的副本 - 尽管这对我来说似乎有点危险,可能会出现线程问题
  • 通过 -initWithModel: 方法将 NSManagedObject 解压到我在虚拟机上实际使用的属性中 - 这意味着我不再收到 的任何更新初始初始化后的 NSManagedObject
  • 保留 NSManagedObjectNSManagedObjectID 的副本,并专门针对每个 ViewModel 实例使用 NSManagedObjectContext 来检索和监控私有(private)NSManagedObject 及其属性 - 对每个 ViewModel 实例执行此操作似乎有点繁重(并且可能非常脆弱)

这些看起来都不理想。我脑子里有一个想法,最好结合通过 -initWithModel: 传入初始 NSManagedObject 实例,但只保留 NSManagedObjectID >,然后监听核心数据保存通知并清除任何与保留的对象 ID 无关的通知。

最佳答案

我会做的,我不知道这是否一定是最佳实践,是传入模型,然后将 View 模型的属性绑定(bind)到模型上的(可能映射的)属性。这样您就可以通过 View 模型获取更新。它确实留下了一点线程问题,但您可以使用deliverOn:来确保更新始终在主调度程序上传递。

关于cocoa - 使用 MVVM 时处理 NSManagedObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22145291/

相关文章:

objective-c - 在基于 View 的 NSTableView 上更改选择颜色

xcode - 在不使用 Xcode 的情况下通过终端链接 objective-c 类文件

objective-c - 截断字符串

Xcode IB : Inexplicable area?

ios - 将 coredata 中的实体排序到 textView?

ios - 有没有办法在 XCode 4 中以编程方式执行 "Create NSMangedObjectSubclass"命令?

core-data - NSManagedObject 是否保留其 NSManagedObjectContext?

visual-studio-2010 - 有关ItemsControl的XAML设计数据的问题

wpf - MVVM 和 UniformGrid 的数据绑定(bind)

WPF MVVM 和单元测试