一种临时保留核心数据模型的重复版本的方法
A way to persist a duplicate version of the core data model temporarily
这个问题有点难以解释。两个多星期以来,我一直在寻找这个问题的答案,但我找不到这个用例的解决方案。
在我深入细节之前,请先看一下这张图片。
首先向用户显示主列表视图。此视图中显示的数据(患者记录)是从 API 中获取的。此处需要注意的一件重要事情是,仅为当前日期检索数据。数据库中有过去几天和未来几天的记录,但默认情况下数据是当前日期。在我调用 API 并获取数据后,我从中创建对象并将这些对象存储在 Core Data 中。然后我从我的核心数据模型中获取它们并将它们显示在 table 视图中。
主列表中的每个患者记录实际上是一组较小的记录。当用户点击一条记录时,他将被带到一个 子列表 ,您可以在其中看到所有这些较小的记录详细信息。他还可以编辑、删除这些较小的记录项。
这是我需要帮助的地方。当用户在 子列表 中时,他可以从该视图中更改日期。它应该显示新选择日期的小记录详细信息。这意味着再次调用 API,将所选日期作为参数发送并获取该日期的数据并将其显示在子列表视图中。
但这整个日期更改操作对主列表的数据没有影响。换句话说,即使在子列表中更改了日期,主列表的当前日期数据也不应更改。 If/when 用户点击后退按钮进入主列表,旧的、当前日期的数据在他离开时应该随时可用,子列表视图中的新数据在离开该视图时被丢弃。
另一件事是,虽然新数据是临时的,但用户仍然需要能够编辑这些记录。这不仅仅是为了展示目的。这就是为什么我需要将它们添加到核心数据中。
我的问题是,一旦我在子列表中获得新日期的数据,有没有办法可以暂时保留该数据而不影响我的原始数据集?
非常感谢任何帮助。
谢谢。
当您说 "fetched from an API" 时,我认为这意味着通过网络从 Web API 获取。对吗?
回答您提出的问题:这看起来是一个单独的 NSManagedObjectContext 的好案例。您可以为您的子列表创建一个新的 MOC,然后在完成后销毁该 MOC。这将允许您在子列表视图中使用核心数据,但更改不会保留在您的数据存储中。
另一种方法是在永久存储或内存中有一个重复的持久存储。
但是,听起来 Core Data 不是这项工作的正确工具。如果您从 Web 服务中提取数据,并在不同的时间段内保留不同的数据块,那么您将花费更多的时间来处理核心数据,而不是它的价值。
这个问题有点难以解释。两个多星期以来,我一直在寻找这个问题的答案,但我找不到这个用例的解决方案。
在我深入细节之前,请先看一下这张图片。
首先向用户显示主列表视图。此视图中显示的数据(患者记录)是从 API 中获取的。此处需要注意的一件重要事情是,仅为当前日期检索数据。数据库中有过去几天和未来几天的记录,但默认情况下数据是当前日期。在我调用 API 并获取数据后,我从中创建对象并将这些对象存储在 Core Data 中。然后我从我的核心数据模型中获取它们并将它们显示在 table 视图中。
主列表中的每个患者记录实际上是一组较小的记录。当用户点击一条记录时,他将被带到一个 子列表 ,您可以在其中看到所有这些较小的记录详细信息。他还可以编辑、删除这些较小的记录项。
这是我需要帮助的地方。当用户在 子列表 中时,他可以从该视图中更改日期。它应该显示新选择日期的小记录详细信息。这意味着再次调用 API,将所选日期作为参数发送并获取该日期的数据并将其显示在子列表视图中。
但这整个日期更改操作对主列表的数据没有影响。换句话说,即使在子列表中更改了日期,主列表的当前日期数据也不应更改。 If/when 用户点击后退按钮进入主列表,旧的、当前日期的数据在他离开时应该随时可用,子列表视图中的新数据在离开该视图时被丢弃。
另一件事是,虽然新数据是临时的,但用户仍然需要能够编辑这些记录。这不仅仅是为了展示目的。这就是为什么我需要将它们添加到核心数据中。
我的问题是,一旦我在子列表中获得新日期的数据,有没有办法可以暂时保留该数据而不影响我的原始数据集?
非常感谢任何帮助。
谢谢。
当您说 "fetched from an API" 时,我认为这意味着通过网络从 Web API 获取。对吗?
回答您提出的问题:这看起来是一个单独的 NSManagedObjectContext 的好案例。您可以为您的子列表创建一个新的 MOC,然后在完成后销毁该 MOC。这将允许您在子列表视图中使用核心数据,但更改不会保留在您的数据存储中。
另一种方法是在永久存储或内存中有一个重复的持久存储。
但是,听起来 Core Data 不是这项工作的正确工具。如果您从 Web 服务中提取数据,并在不同的时间段内保留不同的数据块,那么您将花费更多的时间来处理核心数据,而不是它的价值。