我的应用程序需要能够与服务器断开连接并随心所欲地连接到另一个服务器,这需要转储我们拥有的任何持久存储。这里的问题是释放'主'管理对象上下文意味着我在其中存在的任何错误,这会导致各种意外的小问题和崩溃。
有没有更好的方法来“重置”我的堆栈/托管对象,而不仅仅是在我的Core Data堆栈中的所有内容上调用release?
答案 0 :(得分:2)
您需要从上到下关闭Core Data堆栈。
removePersistentStore:error:
发送给持久性商店协调员。 在运行中更改这样的核心数据很困难,因为Core Data不仅仅是一个悬挂在应用程序侧面的小数据库。它旨在充当应用程序整个模型层。由于Apple真的进入了模型 - 视图 - 控制器设计,因此该模型是该程序的实际核心(因此是Core Data的名称。)因此,您无法真正打开和关闭仅仅是SQL数据库的方式。
您可能实际上想要重新考虑您的设计,以便您可以更改服务器而无需关闭整个数据模型。例如。只需删除与未使用的服务器关联的所有托管对象。
答案 1 :(得分:1)
如果您的意思是想要对所有对象进行故障,那么将从持久性存储中再次获取它们,
[managedObjectContext reset];