ios - 一种临时保留核心数据模型的重复版本的方法

标签 ios swift core-data nsmanagedobjectmodel

这个问题有点难以解释。两个多星期以来我一直在寻找这个问题的答案,但找不到该用例的解决方案。

在详细介绍之前,请先看一下这张图片。 enter image description here

首先向用户显示主列表 View 。此 View 中显示的数据(患者记录)是从 API 获取的。这里需要注意的一件重要事情是仅检索当前日期的数据。数据库中有过去几天和 future 几天的记录,但默认情况下数据是当前日期。调用 API 并获取数据后,我用它们创建对象并将这些对象存储在 Core Data 中。然后我从核心数据模型中获取它们并将它们显示在 TableView 中。

主列表中的每个患者记录实际上是一组较小的记录。当用户点击记录时,他会被带到子列表,您可以在其中查看所有较小的记录详细信息。他还可以编辑、删除这些较小的记录项。

这是我需要帮助的地方。当用户位于子列表中时,他可以在该 View 中更改日期。它应该显示新选择日期的小记录详细信息。这意味着再次调用 API,将选定的日期作为参数发送,并获取该日期的数据并将其显示在子 ListView 中。

但是整个日期更改操作对主列表的数据没有影响。换句话说,即使在子列表中更改了日期,主列表的当前日期数据也不应更改。如果/当用户点击后退按钮进入主列表时,旧的当前日期的数据应该在用户离开时随时可用,并且子 ListView 中的新数据在离开该 View 时将被丢弃。

另一件事是,虽然新数据是临时的,但用户仍然需要能够编辑这些记录。这不仅仅是为了展示目的。这就是为什么我需要将它们添加到核心数据中。

我的问题是,一旦我在子列表中获取了新日期的数据,有没有办法可以暂时保留该数据而不影响我的原始数据集?

如果有任何帮助,我将不胜感激。

谢谢。

最佳答案

当您说“从 API 获取”时,我认为这意味着通过网络从 Web API 获取。对吧?

在回答您提出的问题时:这看起来像是一个单独的 NSManagedObjectContext 的好案例。您可以为您的子列表创建一个新的 MOC,然后在完成后销毁该 MOC。这将允许您在您的子 ListView 中使用核心数据,但更改不会保留在您的数据存储中。

另一种方法是在永久存储或内存中有一个重复的持久存储。

但是,听起来 Core Data 并不是这项工作的正确工具。如果您从 Web 服务中提取数据,并在不同的时间段内保留不同的数据 block ,那么您将花费更多的时间来处理核心数据,而不是它的值(value)。

关于ios - 一种临时保留核心数据模型的重复版本的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28836453/

相关文章:

ios - 如何检查 UITextField 何时发生变化?

ios - Swift 可选 - 解包可选值时意外发现 nil

ios - 如何不保存 managedobjectcontext

ios - 向下转换核心数据错误

iOS8.1 Core-Data轻量级+重量级迁移

css - iOS 中的复选框外观

iOs - 无法识别的选择器发送到 TextAction 上的实例

ios - 如何在CNContactVCardSerialization中使用方法dataWithContacts?

ios - tableView heightForRowAtIndexPath 不工作

swift - 第一次打开应用程序时在 UserDefaults 中保存日期