2

当用户在我的应用中启用 iCloud 时,我需要将所有本地文件移动到 iCloud。在这里,我setUbiquitous:itemAtURL:destinationURL:error:用来移动每个文件。问题是,如果(对于任何本地文件)相同的文件 URL 已存在于 iCloud 上,此方法将失败。

我的问题是,如何确定哪个文件更新(本地与 iCloud),以便我可以覆盖 iCloud 版本或丢弃每个文件的本地版本?或者,我能否以某种方式强制 iOS 执行上传并将文件状态设置为 iCloud 上的冲突,以便我的冲突解决方法将接管并处理这个问题?

4

1 回答 1

2

FWIW,来自 Apple 的 dox,他们建议采用全有或全无的 iCloud 方法 - 即,在某一时刻询问用户是否应该启用 iCloud,然后不要更改。

也就是说,对于您的情况,我建议在用户启用 iCloud 后执行以下步骤:

1) 运行具有普遍作用域的 NSMetaDataQuery 以获取该应用程序已在云中的文件列表。(请注意,查询必须在主线程上运行,否则您将一无所获)。

2)如果你有一个同名的文件,你可以在 NSMetaData 中使用最后修改的日期键(NSMetadataItemFSContentChangeDateKey)来确定你应该使用哪个(或者你想使用什么方法来解决冲突)

3) 如果文件还没有在云中,那么使用 setUbiquitous 方法将它放在那里。

于 2013-02-19T17:03:00.977 回答