应用程序将终止通知并保存草稿(核心数据)
如果用户当前在我的编辑视图控制器中,我希望能够在用户关闭我的应用程序时保存更改。 为此,我正在观察共享应用程序的UIApplicationWillTerminateNotification
。 在我的应用程序委托中,我使用applicationWillTerminate:
方法关闭并释放所有核心数据上下文。
我发现的问题是, applicationWillTerminate:
程序委托中的applicationWillTerminate:
方法在任何观察者对UIApplicationWillTerminateNotification
通知作出反应之前被调用。 这意味着我的核心数据栈已经在编辑视图控制器有机会保存任何东西之前发布并关闭了!
这通常是如何克服的,因为我看不到路!
非常感谢,
迈克尔
编辑:由于运行循环和通知的内部运作,第一个(基于通知)的方法可能不会工作。
如果你想坚持基于通知的架构,你可以在applicationWillTerminate:
发布自己的通知applicationWillTerminate:
。 只需创建您自己的MyApplicationWillTerminate
通知,然后在[NSNotificationCenter defaultCenter]
上调用postNotification:
然后让您的编辑控制器注册MyApplicationWillTerminate
实例,而不是默认的UIApplicationWillTerminateNotification
。
另一种选择是让应用程序委托存储编辑控制器的实例(如果它是可见的话),然后在applicationWillTerminate:
在释放Core Data上下文之前保存新信息。 尽管如此,这会污染您的应用程序委托,因此它可能不是最佳解决方案。
最后一个想法:为什么不让应用程序保存用户创建它们时进行的任何编辑? 这样,您就不必担心应用程序在编辑一段信息的过程中关闭 - 编辑已保存,您可以简单地释放Core Data的内容。 (这可能不适合你;如果不知道更多关于你的应用程序结构和你正在编辑的数据的信息,我真的不能说。)
不确定,但NSManagedObjectContext是否保留其商店协调器和对象模型? 在这种情况下,让您的控制器保留托管对象上下文不够吗?
链接地址: http://www.djcxy.com/p/43579.html上一篇: Application Will Terminate Notification & Saving Drafts (Core Data)
下一篇: How to send multicast messages and reuse a port in Erlang?