
156
|
第
5
章
当文件位于
iCloud
中,同时我们又修改了这个文件,
iCloud
会自动将修改的内容
上传到
iCloud
,这样其他设备就会收到新版本的文件。如果一个文件同时在不同的
设备上被修改,文件将发生冲突。在查找结果中通过
NSMetadataUbiquitousItem
HasUnresolvedConflictsKey
键检索相关属性,我们可以知道是否有冲突发生:值为
true
,表明有冲突。
解决冲突有多种的方法,其中比较简单的做法是“当冲突方式时,标记本地文件版
本为正确的版本”。例如以下代码:
func resolveConflictsForItemAtURL(url : URL) {
//
“只有我是正确的,其他都是错的”
for conflictVersion in NSFileVersion
.unresolvedConflictVersionsOfItem(at: url)! {
//
标记其他版本为“已解决”,
iCloud
会通知其他设备去
//
更新它们的本地拷贝
conflictVersion.isResolved = true
}
//
移除发生冲突的拷贝
do {
try NSFileVersion.removeOtherVersionsOfItem(at: url)
} catch let error {
print("Failed to remove other versions of item at \(url): \(error)") ...