2

现在,在我的应用程序中,我有一个顶级对象,该对象具有一个-(void)archive将自身存档到应用程序文档目录的方法。

我想知道是否可以通过更改文件路径将存档简单地保存到 iCloud 而不是本地。

我已经阅读了很多关于使用 iCloud 的内容,但我还没有看到这个问题得到解决。我猜这是不可能的,但我想确定。

谢谢你。

4

1 回答 1

2

您不应该将文件直接保存到 iCloud,而是将其保存在本地,然后将其移动到与您的应用关联的 iCloud 文件夹中。

首先,您需要查看用于将文件保存到 iCloud 的文件协调。

然后,您只需检索要保存的文件的 URL 或路径。您可以通过调用获取您的 iCloud 目录:[[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:@"myIdentifier"];然后附加适当的路径组件。

最后,您将文件 (egmyFile.dat) 保存到临时本地文件夹,如应用程序的文档目录,然后调用:[[NSFileManager defaultManager] setUbiquitous:YES itemAtURL:/*local URL*/ destinationURL:/*Cloud URL*/ error:&error];这会将文件从本地文件夹移动到 iCloud 文件夹,然后操作系统的同步守护进程完成其余工作。

如果您保存到 iCloud 文档目录,您的文件将通过 iCloud 驱动器对用户可见。如果您保存到不同的 iCloud 目录,用户将无法看到该文件。

注意:您需要使用NSMetadataQuery来发现其他设备保存到 iCloud 的文件。此外,iOS 设备不会自动下载您保存到 iCloud 的文件;您需要专门调用[[NSFileManager defaultManager] startDownloadingUbiquitousItemAtURL:url error:&error];以启动下载。OS X 设备会自动下载 iCloud 文件。您可以使用NSFilePresenter协议在应用程序的生命周期内监视 iCloud 目录的更改(以检测其他设备保存的文件)。

于 2015-01-06T18:24:57.647 回答