1

如果用户安装一个使用 iCloud 的UI(Managed)Document应用程序,然后使用该应用程序,创建保存到 iCloud 的数据,然后在他的手机上删除该应用程序,则 iCloud 数据将保留在设备上(交易日志等)。如果用户重新安装应用程序,它将尝试使用这些旧文件。

我有以下两个问题:

  • iCloud 文档可能同时发生了变化,如果用户在重新安装应用程序后首次启动时没有网络连接,则可能会出现问题。
  • 此应用程序的 iCloud 文档可能已被用户删除(通过设置或在用户库中的 Mac OS Finder 中)。现在,当用户在重新安装应用程序后第一次启动时没有网络时,应用程序可能会认为存在一个包含数据的无处不在的容器,即使它已经被删除(应用程序可能会崩溃)。

这不是很容易测试,但我已经为这两个问题明确地崩溃和故障。例如NSMetadataQuery,向我显示 iCloud 中不存在的文档的结果,因为它们已被删除(但它们在删除应用程序时存在)。

有什么简单的解决方案吗?我曾想过在首次启动应用程序时删除设备上的本地 iCloud 数据 - 但如何做到这一点?

4

1 回答 1

0

这是不可能的。如果你在本地删除一个 iCloud 文档,你会在所有地方删除它——最终。iCloud API 没有独立于 iCloud 服务管理本地副本的概念,因此,如果您删除一个副本——即使网络中断——iCloud 普遍存在的守护程序也会第一时间向该服务发送删除命令。

当前 API 允许的最接近的近似值是:

  • 检查网络是否可达
  • 如果无法访问,请不要尝试访问任何 iCloud 文档(因为您注意到,信息可能已过时)。
  • 如果网络启动,请尝试打开所有现有的 iCloud 文档。(在 iOS 上,iCloud 更新仅按需下载,因此您需要创建该需求)。

如果这还不够好(让我们面对现实,它还不够好),请向 Apple 提交错误并希望获得最好的结果。

于 2013-02-28T17:47:47.370 回答