我一直在阅读Apple Docs,在线阅读几个教程,甚至在iCloud上观看CS193p讲座,但仍有一件事我不清楚:
假设您有一个将文档同步到iCloud的应用程序。如何在用户无法访问iCloud服务(飞行模式,网络不可用等等)时,如何允许用户仍然查看/编辑现有文档并创建新文档。
例如。 iOS5中的'提醒应用程序允许用户查看/编辑驻留在iCloud上的现有文档,即使您可能处于飞行模式。然后,在下次iCloud服务可用时传播更改。
这对我来说真的很奇怪。如果没有为无处不在的容器提供有效的元数据查询,如何填充提醒列表?即。由于iCloud不可用,调用URLForUbiquityContainerIdentifier:
将返回nil。然后无法创建元数据查询,因为您无法为其提供查询的URL。因此,您无法填充文档列表供用户脱机查看和编辑。
任何有关如何完成此操作的帮助或见解都非常适用!
==================================== UPDATE ======= =============================
好的 - 我偶然发现了这个帖子:here
它基本上是在讨论使用iCloud时文件系统中文件的存储方式。根据我在iCloud上创建文件时收集的内容,它基本上保存在您第一次调用URLForUbiquityContainerIdentifier:
时创建的特殊扩展本地存储容器中。这个特殊目录由iCloud deamon管理。除了存储在此特殊目录中之外,文档还会上载到云中以供其他应用程序使用。
现在 - 假设我的上述假设是正确的,问题是:如果iCloud突然不可用,您如何访问本地守护程序存储的文件?
答案 0 :(得分:1)
这个问题的答案与另一个问题有关。您需要从iCloud请求要修改的文件,以便下载到离线模式下可用的本地UbiquityContainer。看到这个问题答案
Does URLForUbiquityContainerIdentifier: return nil when network access is not available?
总而言之,方法URLForUbiquityContainerIdentifier:
在离线时不会返回nil,只是在iCloud确实无法使用时。