【发布时间】:2015-01-06 17:33:45
【问题描述】:
现在,在我的应用程序中,我有一个带有 -(void)archive 方法的顶级对象,它将自己归档到应用程序的文档目录中。
我想知道是否可以通过更改文件路径将存档简单地保存到 iCloud 而不是本地。
我已经阅读了很多关于使用 iCloud 的文章,但我还没有看到这个问题得到解决。我猜这是不可能的,但我想确定一下。
谢谢。
【问题讨论】:
标签: ios objective-c icloud nsarchiving
现在,在我的应用程序中,我有一个带有 -(void)archive 方法的顶级对象,它将自己归档到应用程序的文档目录中。
我想知道是否可以通过更改文件路径将存档简单地保存到 iCloud 而不是本地。
我已经阅读了很多关于使用 iCloud 的文章,但我还没有看到这个问题得到解决。我猜这是不可能的,但我想确定一下。
谢谢。
【问题讨论】:
标签: ios objective-c icloud nsarchiving
您不应将文件直接保存到 iCloud,而是将其保存在本地,然后将其移动到与您的应用关联的 iCloud 文件夹中。
首先您需要查看file coordination,您应该使用它来将文件保存到 iCloud。
然后您只需检索要保存的文件的 URL 或路径。您可以通过调用获取您的 iCloud 目录:[[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:@"myIdentifier"]; 然后附加适当的路径组件。
最后,您将文件(例如 myFile.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 目录的更改(以检测其他设备保存的文件)。
【讨论】: