如何通过应用程序委托使用托管对象上下文实例化还原的视图控制器?

问题描述 投票:1回答:2

问题陈述

在我的应用程序中,我在我的应用程序委托中的applicationWillFinishLaunchingWithOptions方法中实例化了一个托管对象上下文(moc)。在正常操作期间,我通过为每个视图控制器设置的自定义initWithMoc初始化方法将该同一个Moc传递给层次结构中的所有视图控制器。

一切正常,但现在我正尝试使用iOS6的内置状态恢复功能。

[当我进入视图控制器中的viewControllerWithRestorationIdentifierPath恢复方法时,我不确定如何从应用程序委托访问新创建的Moc。

问题

如何从应用程序委托中将每个视图控制器的Moc指向相同的Moc?

ios core-data ios6 restore
2个回答
1
投票

根据Apple的iOS App Programming Guide: State Preservation and Restoration

值得注意的是,如果您为视图指定还原类控制器,UIKit不会尝试找到您的视图控制器隐式地。

如果您选择使用还原类,则您的viewControllerWithRestorationIdentifierPath:coder:方法应该创建该类的新实例,执行一些最少的操作初始化,然后返回结果对象。

您将能够使用旧的initWithMOC:方法创建子视图控制器的实例,以供状态保留和恢复API使用。

通过这种方式,但是您失去了'它的工作原理,而您需要做的就是在情节提要中指定恢复标识符'。

有人知道更好的方法吗?最明显的方法是从应用程序委托中检索它,但这实际上是一种非首选的方法,因此请不要这样做。除了概念上的所有弊端之外,从应用程序委托中检索邪恶还杀死了使用可丢弃的嵌套上下文的好处。


0
投票

一种方法是通过NSPersistentContainerUIApplication注册您的registerObjectForStateRestoration子类或自己的Core Data堆栈对象(使用UIStateRestoring协议,然后在视图控制器子类的恢复方法中对指针进行编码和解码。] >

© www.soinside.com 2019 - 2024. All rights reserved.