【问题标题】:How to avoid duplicated records in core data - ios如何避免核心数据中的重复记录 - ios
【发布时间】:2017-05-29 08:20:27
【问题描述】:

我是 iOS 新手,Swift。我的应用程序有一个名为“Category”的实体,与许多名为“Movies”的实体有关系。

根据我从 url 获得的数据,“电影”实体正在发生变化。我正在寻找一种方法,使每个类别中的电影记录不重复,但我想不出一个简单的方法。

【问题讨论】:

  • 实体有唯一的ID吗?
  • 不,他们没有。类别有限制,电影没有。
  • 你在问什么?标题说重复但问题说不重复?
  • 您是否设置了 Movie 和 Category 具有多对多关系?
  • 这是一对多的关系。很烦人,这样一个基本的需求不能轻易实现。

标签: ios swift core-data


【解决方案1】:

Core-data 没有内置方法来确保唯一性。你必须自己管理。但这并不难。在每次插入/更新之前进行一次提取 - 如果它不存在则创建它,如果它已经存在则更新它。如果您一次更新多个(例如从具有多个实体更新的网络请求),则在单个提取请求中获取所有内容,然后根据需要创建或更新。

通常,这些提取是使用每个实体的唯一 ID 完成的。如果您的实体没有任何 uniqueId,那么您遇到的问题比核心数据更深。你可以有两部电影同名,或者一部电影有不同的名字。如果您没有任何相同的内容,那么您根本无法知道是否需要创建另一个实体或更新现有实体。您可以使用电影名称,但我不建议这样做。我建议您仔细查看您的服务器 api,看看是否提供了一个 uniqueId,如果没有,则必须由服务器团队修复它。

【讨论】:

  • 当您获得新数据时,按名称搜索现有电影。如果你找到一个然后更新它,如果你没有然后创建它。 (这又是一个坏主意 - 你的系统中每部电影都有唯一 ID。如果服务器没有给你一个唯一 ID,我会很惊讶)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 2012-07-02
相关资源
最近更新 更多