我正在构建一个使用TabBarController
并具有多个视图的应用程序,这些视图以相同的方式显示SAME数据。其中一个视图是TableView,另一个是Map视图。
数据来自服务器,我想有一种存储该数据的方法,可以从多个视图控制器(具有“单一真相”)进行访问。我认为Core Data是一个不错的选择,尤其是因为我发现NSFetchedResultsController
类在处理表视图时非常方便。
仅在使用应用程序时才需要存储数据,因此我在考虑使用Core Data而不实际将任何内容保存到磁盘上。我发现存在一种In-memory
商店类型,我认为这是我所需要的。但是,我发现只需将新实体插入上下文(尚未调用context.save()
),NSFetchedResultsController
就可以检测到更改并更新我的UI。
问题1:
在使用context.save()
存储类型时真的需要调用In-memory
吗?
我认为在多种情况下可能有必要。
问题2:
如果不需要调用context.save()
,那么我使用哪种持久性存储类型也无关紧要吗?
感谢您的帮助!
答案 0 :(得分:0)
问题1:使用内存存储类型时真的需要调用context.save()吗?
我认为在多种情况下可能有必要。
是的。如果您使用一种常见的模式,即UI具有一个上下文,而另一个具有不同的上下文来处理传入的网络数据,则需要保存对一个上下文的更新所做的更改,以便在另一个上下文中可用。
问题2:如果不必调用context.save(),那么我使用哪种持久性存储类型也无关紧要吗?
如果您使用内存存储,则您的持久存储类型为NSInMemoryStoreType
。重要的是选择正确的商店类型是如何使其成为内存中商店。
请记住,使用内存存储意味着用户将无法以任何方式离线使用该应用程序。是否重要取决于您的应用程序,但是让人们在没有网络连接时查看较旧的数据会很有用。