iOS应用程序取决于核心数据和打开文档

时间:2013-12-31 08:23:00

标签: ios core-data asynchronous uimanageddocument

我的应用程序取决于打开的UIManagedDocuments。因此,除非文档是开放的,否则我基本上不希望用户做任何事情。问题是打开已关闭的文档是异步的。在UIManagedDocuments打开之前,确保用户不输入要保存的数据的最佳方法是什么?我可以想到两种可能的解决方案:

1)我是否应该在检查中包含访问UIManagedDocuments的每个调用以查看它是否已打开并在打开已关闭文档的完成处理程序上运行代码?这种方式似乎并不理想,因为用户可能会做一些事情并希望保存结果,但它还不会被保存。

2)我想到的另一种方法是以某种方式阻止应用程序等待文档打开。但我在某处读到,阻止主线程等待文档打开是不好的。我可以以某种方式使主线程做开放本身吗?或者那也不好?

我的另一个问题是,如果我在加载我的应用程序(首次启动)时打开所有文档,它们是否会保持打开状态直到应用程序终止?或者文件是否可以在任何时候因不确定的原因而关闭?

1 个答案:

答案 0 :(得分:0)

简而言之,您需要重新设计用户界面和/或停止使用UIManagedDocument。您的应用程序启动应该设计为可以等待核心数据堆栈初始化。如果您现在不这样做,则需要重新设计应用程序的启动。

此外,UIManagedDocument不应用作主要核心数据堆栈。只应在构建基于文档的应用程序时使用UIManagedDocument。如果您自己构建适当的Core Data堆栈,则无需异步启动。

但是,由于迁移,iCloud集成等原因,您仍然希望断开应用程序启动与数据显示的连接。所有这些都需要花费人类可感知的时间,并且您不希望它们阻止UI。