Iphone 允许用户在iCloud不可用时编辑/查看现有文档

Iphone 允许用户在iCloud不可用时编辑/查看现有文档,iphone,objective-c,ios,ios5,icloud,Iphone,Objective C,Ios,Ios5,Icloud,我一直在阅读苹果文档,在线阅读了一些教程,甚至在iCloud上观看了CS193p的讲座,但有一件事我还不清楚: 以您有一个将文档同步到iCloud的应用程序为例。您如何允许用户在无法访问iCloud服务(飞机模式、网络不可用等)时仍然查看/编辑现有文档并创建新文档 比如说。iOS5中的“提醒”应用程序允许用户查看/编辑驻留在iCloud上的现有文档,即使您可能处于飞行模式。这些更改将在下次iCloud服务可用时传播 这对我来说真的很奇怪。如果没有为元数据查询提供指向无处不在的容器的有效URL,如

我一直在阅读苹果文档,在线阅读了一些教程,甚至在iCloud上观看了CS193p的讲座,但有一件事我还不清楚:

以您有一个将文档同步到iCloud的应用程序为例。您如何允许用户在无法访问iCloud服务(飞机模式、网络不可用等)时仍然查看/编辑现有文档并创建新文档

比如说。iOS5中的“提醒”应用程序允许用户查看/编辑驻留在iCloud上的现有文档,即使您可能处于飞行模式。这些更改将在下次iCloud服务可用时传播

这对我来说真的很奇怪。如果没有为元数据查询提供指向无处不在的容器的有效URL,如何填充提醒列表?例如,调用
URLForUbiquityContainerIdentifier:
将返回nil,因为iCloud不可用。那么,创建元数据查询是不可能的,因为您无法为其提供一个要查询的URL。因此,您无法填充文档列表,以便用户脱机查看和编辑

非常感谢您对如何完成此操作的任何帮助或见解

===============================================================================================================================

好的-我偶然发现了这条线索:

它基本上讲的是使用iCloud时文件如何存储在文件系统中。从我收集的信息来看,每当在iCloud上创建文件时,它基本上都保存在一个特殊的扩展本地存储容器中,该容器是在您第一次调用
URLForUbiquityContainerIdentifier:
时创建的。此特殊目录由iCloud deamon管理。除了存储在这个特殊的目录中,文档还被上传到云上供其他应用程序使用


现在-假设我上面的假设是正确的,问题是:如果iCloud突然不可用,您如何访问本地守护进程存储的文件?

此问题的答案与另一个问题相关。您需要从iCloud请求要修改的文件,以便将其下载到本地UbiquityContainer,该容器在脱机模式下可用。看到这个问题的答案了吗


总之,方法
URLForUbiquityContainerIdentifier:
在脱机时不会返回nil,而只是在iCloud真正不可用时。

我还应该提到,NSFileManager可能会被阻塞,应该在主线程的不同线程中调用。