我的应用程序必须能够断开与服务器的连接,并立即连接到另一台服务器,这需要转储我们拥有的所有持久性存储。这里的问题是释放“主”托管对象上下文意味着我在其中放置的任何对象都围绕故障,这会导致各种意外的小问题和崩溃。
有没有比在Core Data堆栈中的所有内容上调用release更好的方法来“重置”在程序周围乱堆的堆栈/托管对象?
最佳答案
您需要从上至下关闭核心数据堆栈。
removePersistentStore:error:
发送到持久性存储协调器。 即时更改核心数据非常困难,因为核心数据不仅仅是应用程序一侧的一个小型数据库。它旨在用作应用程序的整个模型层。由于Apple确实参与了Model-View-Controller设计,因此模型是程序的实际核心(因此使用Core Data的名称。)因此,您无法像单纯的SQL数据库那样真正地打开和关闭它。 。
您可能实际上想重新考虑设计,以便无需关闭整个数据模型即可更改服务器。例如。只需删除与未使用的服务器关联的所有托管对象。