具有核心数据的 Alamofire 对象映射器

Posted

技术标签:

【中文标题】具有核心数据的 Alamofire 对象映射器【英文标题】:Alamofire object mapper with core data 【发布时间】:2018-02-22 10:12:08 【问题描述】:

我正在编写一个应用程序,其中有一个显示用户列表的仪表板。所以我创建了一个名为“用户”的实体。对于映射,我使用的是 Alamofire 对象映射器。 场景 在调用 API 之前,我正在检查网络是否可用。如果不是,我从核心数据中获取实体并显示保存的结果。如果是,我会调用 API 并从 API 获取对象并将其保存到我的上下文中。问题 现在,当我从 API 获取对象时,我将响应保存在 NSManagedObjectContext 中,并将其附加到我的“用户”实体中已经存在的 NSManagedObjects。我想要的是,如果用户已经存在于实体中,我不不想再次将该用户对象保存在我的实体中。所以在第一次调用中,我在数据库中有 20 个对象,第二次调用后,计数增加到 40,依此类推。我不希望这样。我如何做到这一点?

【问题讨论】:

@TomHarrington 我似乎找不到确切的答案。这就是我在这里发布它的原因。请您在链接中提供我。 @TomHarrington 虽然我已经解决了这个问题,但我只是想知道这是否是最好的方法。 你是如何解决这个问题的?我也面临同样的问题。你能帮助我吗? @Reckoner @DeepakrajMurugesan 是的,让我回答一下。如果您能够使用我的回答解决此问题,请投票。 假设您的用户模型在第一次 api 调用时有 20 个元素。以及如何确保在第二次 api 调用响应中元素相同意味着不更新,不同意味着更新或删除这样??? @Reckoner。这是解决上述问题的最佳方法吗?非常感谢您的快速回复。我会赞成它没有任何问题 【参考方案1】:

我使用“唯一约束”来解决此问题。它基本上只像主键。因此,当您在实体中添加“id”作为唯一约束时,重复的托管对象将不会存储在上下文中。以下是您可以关注的链接:http://www.oodlestechnologies.com/blogs/How-to-Implement-Unique-Constraints-in-Core-Data

【讨论】:

以上是关于具有核心数据的 Alamofire 对象映射器的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift+Alamofire 自定义映射器错误处理

如何使用对象映射器从响应 JSON 映射子数组?

数据映射器与数据访问对象。区别。哪个更好? [复制]

我应该如何创建我的数据映射器/域对象/服务?

无法使用自动映射器映射内部导航属性。 EF 核心

具有多个后端/DI 时的 ORM 和 POCO - 架构?自动映射器?