iOS确保在访问之前打开文档

从关闭状态打开UIDocuments时,我理解它是在另一个线程上完成的。 我的问题是,如果我的主线程上有代码可以访问文档(比如执行获取请求),那么在我尝试访问文档之前,如果打开已关闭的文档,如何保证文档打开异步?

而不是试图阻止一个线程,阻止您的应用程序的用户访问该文档,直到它打开。 这就是完成处理程序的用途。

- (void)openWithCompletionHandler:(void (^)(BOOL success))completionHandler 

调用完成处理程序时,只需关闭文档打开时显示的任何临时用户界面。 这样,在文档打开时没有线程被阻塞,并且应用程序保持响应(尽管无用)。

您应该使用UIDocument类的documentState属性。 有关更多详细信息,请参阅本文档文档说明 。

它返回以下枚举器来检查:

 enum { UIDocumentStateNormal = 0, UIDocumentStateClosed = 1 << 0, UIDocumentStateInConflict = 1 << 1, UIDocumentStateSavingError = 1 << 2, UIDocumentStateEditingDisabled = 1 << 3 }; typedef NSInteger UIDocumentState; 

来自描述: UIDocumentStateNormal是你想要的,如:
文档已打开,已启用编辑,并且没有与之关联的冲突或错误。