我正在使用iCloud在iOS上的设备之间同步特定文档(UIDocument)。我的实现目前正在运行,但我无法解决更新文件的工作原理。这就是我目前的实施方式:
构造我的UIDocument子类的实例并使用以下命令将其保存在本地
[UIDocument saveToURL]
使用
将文件发送到iCloud[NSFileManager setUbiquitous]
这些步骤将我的文档发送到iCloud,我可以在其他设备上看到该文件。我的问题是如何更新文件?我必须构造一个新的UIDocument对象并保存,并且如上所述setUbiquitous?我已经尝试使用UIDocumentSaveForOverwriting作为[UIDocument saveToURL]中的保存操作,但setUbiquitous调用失败。我还尝试过简单地保存本地文件并在其他设备上查看元数据查询更新通知,但是没有收到任何通知。如何更新UIDocument并将更改反映在iCloud中?
答案 0 :(得分:2)
你应该只进行一次setUbiquitous调用;只是将文件从本地存储复制到ubiquity容器(iOS用于将文件与云同步)。您从该点开始使用以打开或保存文件的URL(如[UIDocument saveToURL]中所示)应该是ubiquity容器中存在的文件的URL。
您可以使用以下代码获取ubiquity容器的位置:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
myobj.containerURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
});
根据Apple文档,您应该使用MetaDataQuery获取URL的位置(因为,显然,URL可以根据各种事件进行更改)。一个例子是in this apple sample.
祝你好运。 :)几天来我一直在努力解决这个问题...