核心数据内存保存

时间:2018-11-29 21:12:42

标签: core-data

我正在构建一个使用TabBarController并具有多个视图的应用程序,这些视图以相同的方式显示SAME数据。其中一个视图是TableView,另一个是Map视图。

数据来自服务器,我想有一种存储该数据的方法,可以从多个视图控制器(具有“单一真相”)进行访问。我认为Core Data是一个不错的选择,尤其是因为我发现NSFetchedResultsController类在处理表视图时非常方便。

仅在使用应用程序时才需要存储数据,因此我在考虑使用Core Data而不实际将任何内容保存到磁盘上。我发现存在一种In-memory商店类型,我认为这是我所需要的。但是,我发现只需将新实体插入上下文(尚未调用context.save()),NSFetchedResultsController就可以检测到更改并更新我的UI。

问题1: 在使用context.save()存储类型时真的需要调用In-memory吗?

我认为在多种情况下可能有必要。

问题2: 如果不需要调用context.save(),那么我使用哪种持久性存储类型也无关紧要吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

问题1:使用内存存储类型时真的需要调用context.save()吗?

     

我认为在多种情况下可能有必要。

是的。如果您使用一种常见的模式,即UI具有一个上下文,而另一个具有不同的上下文来处理传入的网络数据,则需要保存对一个上下文的更新所做的更改,以便在另一个上下文中可用。

  

问题2:如果不必调用context.save(),那么我使用哪种持久性存储类型也无关紧要吗?

如果您使用内存存储,则您的持久存储类型为NSInMemoryStoreType。重要的是选择正确的商店类型是如何使其成为内存中商店。

请记住,使用内存存储意味着用户将无法以任何方式离线使用该应用程序。是否重要取决于您的应用程序,但是让人们在没有网络连接时查看较旧的数据会很有用。