【发布时间】:2016-04-14 17:36:23
【问题描述】:
在执行 VIPER 架构的应用上,建议使用 NSObject 而不是 NSManagedObject(交互器)来处理实体。因此 NSManagedObject 在 PONSO 中被“转换”以使用。 问题是,如果我修改了 PONSO 中的属性,我该如何更新 Core Data?
谢谢。
【问题讨论】:
标签: ios core-data nsmanagedobject nsobject viper-architecture
在执行 VIPER 架构的应用上,建议使用 NSObject 而不是 NSManagedObject(交互器)来处理实体。因此 NSManagedObject 在 PONSO 中被“转换”以使用。 问题是,如果我修改了 PONSO 中的属性,我该如何更新 Core Data?
谢谢。
【问题讨论】:
标签: ios core-data nsmanagedobject nsobject viper-architecture
只需使用NSManagedObject 而不是NSObject。这个建议不能从字面上理解。无论如何,NSManagedObject 是NSObject 的直接后代,因此对于所有实际用途来说,它都一样好。
顺便说一句,VIPER 是一种通用的架构理念,由于其文件和功能的粒度过大而没有得到太多关注。我建议您通过围绕这些控制器更有效地构建代码来减少“大规模视图控制器”问题,并使用 VIPER 作为灵感的良好来源。
【讨论】:
这是一个非常糟糕的主意。如果您在应用程序中使用任何异步代码元素并且我们大多数人都这样做,您应该知道 nsmanagedoject 不是线程安全的传递。你需要重新考虑你的方法。如果您使用核心数据支持的应用程序,那么您可以将 managedobjectid 存储在 ponso 中并使用它来更新数据库,同时在数据库更改后触发 ui 刷新
【讨论】: