2

我正在使用 iCloud 在 iOS 上的设备之间同步特定文档 (UIDocument)。我的实现目前正在运行,但我无法理解更新文件的工作原理。这就是我的实现目前的工作方式:

  1. 构造我的 UIDocument 子类的实例并将其保存在本地:

    [UIDocument 保存到 URL]

  2. 将文件发送到 iCloud

    [NSFileManager 设置无处不在]

这些步骤将我的文档发送到 iCloud,我可以在其他设备上查看该文件。我的问题是如何更新文件?我必须构造一个新的 UIDocument 对象并保存,然后像上面一样 setUbiquitous 吗?我已经尝试使用 UIDocumentSaveForOverwriting 作为 [UIDocument saveToURL] 中的保存操作,但 setUbiquitous 调用失败。我也尝试过简单地保存本地文件并在其他设备上查看元数据查询更新通知,但没有收到任何通知。如何更新 UIDocument 并将该更改反映在 iCloud 中?

4

1 回答 1

3

你应该只做一次 setUbiquitous 调用;这只是将文件从本地存储复制到 ubiquity 容器(iOS 使用它来将文件与云同步)。从那时起,您用来打开或保存文件的 URL(如 [UIDocument saveToURL] 中)应该是文件的 URL,因为它存在于 ubiquity 容器中。

您可以使用如下代码获取 ubiquity 容器的位置:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
        myobj.containerURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];

    });

根据 Apple 文档,您应该使用 MetaDataQuery 获取 URL 的位置(因为显然,URL 可以根据各种事件进行更改)。这个苹果示例就是一个例子。

祝你好运。:) 这几天我一直在为这些东西苦苦挣扎……

于 2012-10-22T23:38:08.730 回答