1

根据苹果的 iCloud 文档:

每个拥有 Apple ID 的用户都会收到一个免费的 iCloud 帐户,但有些用户可能会选择不为给定设备启用 iCloud。在尝试使用任何其他 iCloud 接口之前,您必须调用 URLForUbiquityContainerIdentifier: 方法来确定是否启用了 iCloud。此方法在启用 iCloud(并且指定的容器目录可用)时返回有效 URL,或者在禁用 iCloud 时返回 nil。

如果 URLForUbiquityContainerIdentifier: 返回 nil,那么我认为您必须保存到用户的文档目录。如果用户在以后启用了 iCloud,你应该怎么做?文档只告诉您在一切按计划进行时该怎么做,但没有提及处理其他任何事情的最佳实践……如果 iCloud 被禁用,icloud 文档的本地副本会被删除,还是被删除权限?从沙箱?

4

1 回答 1

0

您应该保存启用 iCloud 的状态(即您是否能够从 获得非零结果URLForUbiquityContainerIdentifier:),注册情况更改通知等。如果您检测到状态已从关闭变为开启,则解决方案很简单;调用setUbiquitous:itemAtURL:destinationURL:error:将文件从您的世界复制到无处不在的世界(毕竟它只是一个文件夹)。

文档中很好地涵盖了这种情况:

http://developer.apple.com/library/mac/#documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html

不幸的是,如果您检测到相反的情况(用户已关闭 iCloud),文件将丢失并且您无法检索它,因为假设URLForUbiquityContainerIdentifier:现在返回 nil。但它仍然在云端。我认为您可以提供界面来要求用户重新打开 iCloud,并提供更多界面来让用户请求将文件移回非普遍存在的世界。

于 2012-12-05T17:51:04.033 回答