如何通过NSFileManager正确管理iCloud文件?

时间:2013-01-18 03:03:30

标签: ios icloud nsfilemanager

我试图通过在NSFileManager上使用iCloud方法(没有文档或文件协调器)将iCloud同步添加到我的iOS / Mac应用程序。该应用程序需要跨各种实例同步音频文件;创建,删除和元数据更改。它不是一个协作风格的应用程序,所以我不是很担心冲突等。我有一些基本的工作,但遇到了一些我似乎无法找到明确答案的基本问题。

  1. 使用iCloud时,涉及两个本地目录,即文件所在的沙箱目录和ubiquity容器目录。一旦我启用了无处不在的文件,我应该直接与ubiquity容器中的文件进行交互,还是应该继续与沙盒文件进行交互并推动/拉动无处不在的文件?感觉后者是最好的,这样如果他们关闭iCloud我就不会丢失所有用户文件(在这种情况下不确定ubiquity容器中的文件会发生什么)。

  2. 如果我维护两个文件,是否有一种首选的方法来推送/拉出普遍容器的增量更改?据我了解,如果用户更改了给定设备上的文件,则所有其他设备都会在其本地普遍存在的副本中获得增量更改(如果已下载)。每当普遍存在的文件发生变化时,我是否应该将文件全部复制到我的本地沙箱目录中,反之亦然?

1 个答案:

答案 0 :(得分:0)

在修改文件时不断将文件复制到普遍容器对我来说似乎不是一个好策略,甚至可能导致iCloud认为文件的更多内容已经发生了变化。您可以直接与ubiquity容器中的文件进行交互,就像处理“普通”文档沙箱中的文件一样。这是所有iCloud文档中规定的模型,尽管可能很稀疏。

你是对的,你需要能够处理用户从iCloud迁移的情况。有一些方法可以将文件从普遍存储容器中移出,而一些较新的iOS 6 API可以更容易地检测用户是否启用了iCloud,尽管这仍然是我们可以使用更多API的区域。