我有一组用作DTO的对象,它们是我从后端接收的JSON创建的对象。 例如,我有对象“ User”代表数据库中的所有用户。我通过REST服务通过JSON获取它们,并将其转换为User对象。
所有这些DTO都具有称为“ BaseDTO”的相同基类。
另一方面,我已经在Core Data中表示了这些对象,因为我必须将其保存在磁盘上。
我的问题是,当我在CoreData中创建实体时,其继承自NSManagedObject
。
由于这个原因,我必须创建“ User”对象,使其DTO和“ UserCoreData”对象的实体coreData都具有相同的字段。
当我想在CoreData中保存“用户”时,我得到了“用户”对象,并通过“ UserCoreData”类中的方法通过传递给方法的“用户”对象字段创建了“ UserCoreData”。
这种方式有点麻烦,我想问你是否可以建议一种更清洁的方式
答案 0 :(得分:1)
因此,根据DTO基类在做什么,您可以做的是将其某些功能提取到协议中,并在协议扩展中添加默认实现。
然后,您的NSManagedObject子类可以采用此协议,并且可以通过这种方式在必要时使用DTO功能。如果这不是一个选择,那么除了重复模型定义外,别无其他方法。
然后,这取决于您的用例,您必须问自己是否真的需要使用CoreData。 仅用于将当前数据保存在磁盘上,还有其他选项,例如Codable。 如果您需要修改对象并查询部分数据,并获得有关更改的通知,CoreData非常有用。但是仅仅为了保留整个对象,有时它做得太多。