我开始尝试向我的 iOS 应用程序添加对状态保存和恢复的支持,该应用程序有一个核心数据组件,我可以通过 UIManagedDocument 访问它。
我开始将恢复标识符添加到我的视图控制器中,并在我的 AppDelegate 和控制器中连接了所需的功能(当前为空)。
我有一个可能被多个视图控制器引用的对象,因此我计划尝试在我的 AppDelegate 中保留和恢复它,并让相关的视图控制器从 AppDelegate 检索对象。这样做的时机可能很棘手,因为应用程序委托方法 didRecodeRestorableState 在所有视图都已经调用了它们自己的 decodeRestorableStateWithCoder 方法之后发生。
我的主要问题是这个共享类以及多个 ViewControllers 都希望保留和恢复 NSManagedObject 属性。我希望能够使用对象的 URIRepresentation 来促进这一点,但我遇到的问题是我的 AppDelegate 将在我的 AppDelegate 的 willFinishLaunchingWithOptions 方法中打开我的 UIManagedDocument。它通过 UIManagedDocument openWithCompletionHandler 方法执行此操作。由于此打开的线程,在我的所有视图和应用程序委托都已尝试恢复其保存状态后,文档已成功打开。一旦文档准备好使用,AppDelegate 就会发送通知,因此我所有的视图控制器都可以收听此通知。
我想我只是想知道这是最好的,甚至是处理这个问题的唯一策略。我的对象需要保留它们恢复的 URIRepresentations,并且只有在文档(以及它的 NSManagedObjectContext)准备好后,才能尝试实际查找并设置它们保存的相应 NSManagedObjects。因此,恢复比执行恢复的调用要晚很多,我假设通常会执行所有恢复工作。我担心控制器在等待文档打开然后正确初始化时是否可能会在短时间内显示为空。
在这种情况下,是否有任何目的阻止和延迟打开我的文档,所以是的,应用程序需要更长的时间才能打开,但至少可以在任何视图出现之前更正确地恢复所需的所有数据。是否有任何计时器正在运行以确保某些方法不会花费太长时间?当我们处于这种不确定状态时显示不同的视图会更正确吗联系。
到目前为止,我似乎无法在文档中找到对此类问题的任何真正解释。
一如既往地非常感谢任何帮助!干杯