在具有 VIPER 架构的应用程序上更新 NSManagedObject
Update NSManagedObject on a app with VIPER architecture
在执行 VIPER 架构的应用程序上,建议使用 NSObject 而不是 NSManagedObject(交互器)处理实体。因此 NSManagedObject 在 PONSO 中是 'transformed' 以供使用。
问题是,如果我在 PONSO 中修改属性,我该如何更新核心数据?
谢谢。
只需使用 NSManagedObject
而不是 NSObject
。不应从字面上理解这一建议。无论如何,NSManagedObject
是 NSObject
的直系后代,因此对于所有实际用途来说,它都一样好。
附带说明一下,VIPER 是一种通用的架构哲学,由于其文件和函数的粒度过大而没有得到太多的关注。我建议您通过围绕这些控制器构建更具功能性的代码来减少 "Massive View Controller" 问题,使用 VIPER 作为良好的灵感来源。
这是一个非常糟糕的主意。如果您在您的应用程序中使用任何异步代码元素并且我们大多数人都这样做,您应该知道 nsmanagedoject 不是线程安全的。你需要重新考虑你的方法。如果您使用核心数据支持的应用程序,那么您可以将 managedobjectid 存储在 ponso 中,并使用它来更新数据库,同时在数据库更改
后触发 ui 刷新
在执行 VIPER 架构的应用程序上,建议使用 NSObject 而不是 NSManagedObject(交互器)处理实体。因此 NSManagedObject 在 PONSO 中是 'transformed' 以供使用。 问题是,如果我在 PONSO 中修改属性,我该如何更新核心数据?
谢谢。
只需使用 NSManagedObject
而不是 NSObject
。不应从字面上理解这一建议。无论如何,NSManagedObject
是 NSObject
的直系后代,因此对于所有实际用途来说,它都一样好。
附带说明一下,VIPER 是一种通用的架构哲学,由于其文件和函数的粒度过大而没有得到太多的关注。我建议您通过围绕这些控制器构建更具功能性的代码来减少 "Massive View Controller" 问题,使用 VIPER 作为良好的灵感来源。
这是一个非常糟糕的主意。如果您在您的应用程序中使用任何异步代码元素并且我们大多数人都这样做,您应该知道 nsmanagedoject 不是线程安全的。你需要重新考虑你的方法。如果您使用核心数据支持的应用程序,那么您可以将 managedobjectid 存储在 ponso 中,并使用它来更新数据库,同时在数据库更改
后触发 ui 刷新