【发布时间】:2019-02-28 03:47:44
【问题描述】:
我正在为我的雇主开发一个订单处理应用程序,该应用程序最初旨在从 API 动态获取有关订单、产品和客户的所有数据。因此,所有对象和处理这些对象的所有函数都在应用程序中以“按值传递”的期望进行交互,使用符合 Codable 的结构。
我现在必须缓存几乎所有这些对象。输入 CoreData。
我不想为一个对象创建两个文件(一个作为 Codable 结构,另一个作为 NSManagedObject 类),然后试图弄清楚如何将一个文件转换为另一个文件。所以我想在同一个文件中实现这两者......同时仍然能够以某种方式使用我的“按值传递”代码。
也许这是不可能的。
编辑
我正在寻找比从头开始重建所有数据结构更简单的方法。我知道我必须做一些改动才能使 Codable 结构与 NSManagedObject 类兼容。我想避免制作一个需要我手动输入每个属性的自定义初始化程序,因为它们有数百个。
【问题讨论】:
-
我已经对此进行了调查,如果可能的话,我希望在特定情况下避免我的代码进行大量重构。
-
你能发布一个示例代码吗? NSManagedObject 不能是一个结构,但你已经想通了。我会将它分开,创建一个处理传入数据的结构(解码,如果数据无效则设置默认值等)。然后是一个封装保存过程的类。毕竟它们是两个不同的问题。
-
@PaFi 从头开始构建时,这是一个很好的解决方案,哈哈。我想我可以在应用程序关闭之前将内存中的每个结构对象包装在一个 NSManagedObject 类中,但这对于这个开发阶段来说并不是最佳解决方案。
-
根据我的经验,最有效的解决方案是链接问题中的解决方案。在每个
NSManagedObject子类中采用Codable并实现init和encode方法。即使是关系也可以很舒服地处理。
标签: swift swift4 nsmanagedobject codable nscopying