gpt4 book ai didi

ios - CoreData ManagedObject 和 App Model 交互

转载 作者:行者123 更新时间:2023-11-28 23:38:23 25 4
gpt4 key购买 nike

我有一组用作 DTO 的对象,它们是我根据从后端接收的 JSON 创建的对象。例如,我有代表数据库中所有用户的对象“用户”。我通过 JSON 的休息服务获取它们并将其转换为用户对象。

所有这些 DTO 都具有相同的基类,称为“BaseDTO”。

另一方面,我在 Core Data 中表示了这个对象,因为我必须将它保存在磁盘上。

我的问题是,当我在 CoreData 中创建实体时,它继承自 NSManagedObject

因此,我必须创建例如“User”对象,其 DTO 和“UserCoreData”,其实体 coreData 且两者都具有相同的字段。

当我想在 CoreData 中保存一个“用户”时,我得到了“用户”对象,并通过“UserCoreData”类中的一个方法通过我传递给方法的“用户”对象字段创建了一个“UserCoreData”。

这种方式有点麻烦,我想问你是否可以建议一种更干净的方式来做到这一点

最佳答案

因此,根据您的 DTO 基类正在执行的操作,您可以将其某些功能提取到协议(protocol)中,并在协议(protocol)扩展中添加默认实现。

然后你的 NSManagedObject 子类可以采用这个协议(protocol),这样你就可以在任何需要的地方使用 DTO 功能。如果这不是一个选项,那么除了重复模型定义之外别无他法。

然后这取决于您的用例,您必须问问自己是否真的需要使用 CoreData。只是为了将当前数据保存在磁盘上,还有其他选项,例如 Codable。如果您需要修改对象和查询部分数据,并获得有关更改的通知,则 CoreData 非常有用。但仅仅为了持久化整个对象,它有时做得太多了。

关于ios - CoreData ManagedObject 和 App Model 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54256204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com