gpt4 book ai didi

icloud - 当 URL 报告 NSURLUbiquitousItemHasUnresolvedConflictsKey 为真但没有其他版本的 URL 时,这意味着什么?

转载 作者:行者123 更新时间:2023-12-02 02:14:49 25 4
gpt4 key购买 nike

为了测试冲突,我一直在两台设备上保存同一文档的两个不同版本。在这两种设备上,我将能够查看 currentVersionOfItemAtURL 以查看“获胜”版本 - 这在两种设备上都是相同的 - 以及 otherVersionsOfItemAtURL removeOtherVersionsOfItemAtURL 以查看其他版本。

然而,我现在似乎得到了一份处于奇怪状态的文档,其中 currentVersionOfItemAtURL 在两个设备上是不同的,并且没有 otherVersionsOfItemAtURLremoveOtherVersionsOfItemAtURL 。使用 getResourceValue:forKey:NSURLUbiquitousItemHasUnresolvedConflictsKey 报告 URL 有 Unresolved 冲突,但我无法看到它们。

当 URL 报告 NSURLUbiquitousItemHasUnresolvedConflictsKey 为真但没有其他版本的 URL 时,这意味着什么?这是我需要在生产应用中处理的情况吗?

最佳答案

我按照 Apple 示例代码解决冲突,但在 iOS8 上使用(旧)文档和数据存储(不是 iCloud Drive)进行测试时发现设置 NSFileVersion 属性 resolved = TRUE 是不够的。 setResolved 有时会失败。

解决方案是对 unresolvedConflictVersionsOfItemAtURL 的结果调用 removeAndReturnError。文档说(我的重点):“对于您不再需要的任何版本,调用 NSFileVersionremoveAndReturnError: 方法来回收文件的存储空间。文档修订保留在服务器 直到你删除它们。”

for (NSFileVersion *v in [NSFileVersion unresolvedConflictVersionsOfItemAtURL:conflictURL])
if ([v removeAndReturnError:&error] == NO)
MRLOGERROR(error);

这似乎解决了这个问题。

请注意,我不会担心 currentVersionOfItemAtURL 因设备而异。我知道它本质上是任意的,将取决于设备上发生的顺序更改。

另请注意,所有冲突解决操作都应包装在文件协调器中:

[[[NSFileCoordinator alloc] initWithFilePresenter:nil]
coordinateWritingItemAtURL:self.conflictFileName options:0 error:&coordError byAccessor:
^(NSURL *conflictURL) {
....
/// resolve conflicts here
....
}];

关于icloud - 当 URL 报告 NSURLUbiquitousItemHasUnresolvedConflictsKey 为真但没有其他版本的 URL 时,这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com