Ios 如何从App Delegate使用托管对象上下文实例化已还原的视图控制器? 问题陈述
在我的应用程序中,我在我的应用程序委托的Ios 如何从App Delegate使用托管对象上下文实例化已还原的视图控制器? 问题陈述,ios,core-data,ios6,restore,Ios,Core Data,Ios6,Restore,在我的应用程序中,我在我的应用程序委托的应用程序willfinishlaunchingwithoptions方法中实例化了一个托管对象上下文(moc)。在正常操作期间,我通过为每个视图控制器设置的自定义initWithMoc初始化方法将相同的moc传递给层次结构中的所有视图控制器 一切正常,但现在我尝试使用iOS6的内置状态恢复功能 当我进入视图控制器中的带有RestorationIdentifierPath的viewControllerWithRestorationIdentifierPath
应用程序willfinishlaunchingwithoptions
方法中实例化了一个托管对象上下文(moc)。在正常操作期间,我通过为每个视图控制器设置的自定义initWithMoc初始化方法将相同的moc传递给层次结构中的所有视图控制器
一切正常,但现在我尝试使用iOS6的内置状态恢复功能
当我进入视图控制器中的带有RestorationIdentifierPath的viewControllerWithRestorationIdentifierPath
恢复方法时,我不确定如何从应用程序委托访问新创建的moc
问题:
如何将每个视图控制器的moc指向来自应用程序代理的同一个moc?根据苹果的
值得注意的是,如果为视图指定恢复类
控制器,UIKit不会尝试查找视图控制器
含蓄地
以及
如果选择使用还原类,则
viewControllerWithRestorationIdentifierPath:coder:方法应
创建类的新实例,执行一些
初始化,并返回结果对象
您将能够使用遗留的initWithMOC:
方法创建子视图控制器的实例,以供状态保存和恢复API使用
然而,通过这样做,您失去了“的好处,它可以正常工作,您需要做的就是在故事板中指定恢复标识符。”
有人知道更好的方法吗?显而易见的方法是从AppDelegate中检索它,但这确实是一种非首选的方式,所以请不要推荐这样做。除了概念层面上的所有邪恶之外,从app delegate中检索它会扼杀使用可丢弃嵌套上下文的好处。根据苹果的
值得注意的是,如果为视图指定恢复类
控制器,UIKit不会尝试查找视图控制器
含蓄地
以及
如果选择使用还原类,则
viewControllerWithRestorationIdentifierPath:coder:方法应
创建类的新实例,执行一些
初始化,并返回结果对象
您将能够使用遗留的initWithMOC:
方法创建子视图控制器的实例,以供状态保存和恢复API使用
然而,通过这样做,您失去了“的好处,它可以正常工作,您需要做的就是在故事板中指定恢复标识符。”
有人知道更好的方法吗?显而易见的方法是从AppDelegate中检索它,但这确实是一种非首选的方式,所以请不要推荐这样做。除了概念层面上的所有邪恶之外,从app delegate中检索它会扼杀使用可丢弃嵌套上下文的好处。一种方法是注册您的
NSPersistentContainer
子类或自己的核心数据堆栈对象(选择UIStateRestoring协议)通过UIApplication
的registerObjectForStateRestoration
,然后在视图控制器子类的还原方法中对指针进行编码和解码。一种方法是注册您的NSPersistentContainer
子类或自己的核心数据堆栈对象(选择UIStateRestoring协议)通过UIApplication
的注册表对象进行状态恢复
,然后在视图控制器子类的恢复方法中对指针进行编码和解码。Aha。我明白了,现在你明确地说出来了,我意识到我又一次考虑过了一切。我一直不相信“它只是工作”的承诺,并试图做太多。我把所有多余的、不必要的工作都拿了出来,它确实按照我的承诺工作了。(我陷入了一个泥潭,试图为多个对象返回VC层次结构,这显然不适合我。)谢谢你的帮助。啊哈。我明白了,现在你明确地说出来了,我意识到我又一次考虑过了一切。我一直不相信“它只是工作”的承诺,并试图做太多。我把所有多余的、不必要的工作都拿了出来,它确实按照我的承诺工作了。(我陷入了一个泥潭,试图为多个对象返回VC层次结构,这显然对我不起作用。)谢谢你的帮助。