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

时间:2015-03-03 16:08:56

标签: ios swift core-data nsmanagedobjectmodel

这是一个难以解释的问题。我在两周内一直在寻找答案,但我找不到这个用例的解决方案。

在我深入了解细节之前,请看一下这张图片。 enter image description here

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

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

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

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

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

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

我真的很感激任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

当你说“从API获取”时,我认为这意味着通过网络API从网络中获取。正确?

回答你提出的问题:对于单独的NSManagedObjectContext来说,这看起来很好。您可以为子列表创建新的MOC,然后在完成后销毁该MOC。这将允许您在子列表视图中使用Core Data,但更改将不会保留在您的数据存储区中。

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

但是,听起来Core Data不适合这项工作。如果您从Web服务中提取数据,并在不同的时间段内保留不同的数据块,您将花费更多时间来对抗Core Data而不是它的价值。