1

我无法理解合并UIDocument存储在 iCloud 中的 2 个或更多冲突版本的选项。在检测到文档冲突后,我目前使用removeOtherVersionsOfItemAtURL简单地保留文档数据的最新版本。但是,我想支持合并有冲突的文档。

我发现的唯一资源和教程提到了用于合并的核心数据和持久存储,示例使用了类似的东西SQLite,我不使用。就我而言,每个文档都是一个单独的文件。

背景:我的应用程序使用自定义NSObject子类(具有相关属性)来存储数据。它们在 a 内进行编码和解码(使用NSCoding+ NSKeyedArchiver/NSKeyedUnarchiverUIDocument。我已经设置了我的应用程序以完全使用 iCloud。它可以使文件无处不在,反之亦然,编辑和删除它们。

请帮助我了解我可以做些什么来合并冲突UIDocument's

4

1 回答 1

4

您将用于NSFileVersion获取文件的冲突版本。当您进入冲突状态时,+unresolvedConflictVersionsOfItemAtURL将为您NSFileVersion提供任何不被视为“当前”的版本的实例。然后,您可以使用 的URL属性NSFileVersion来获取那些冲突版本的内容。

现在您拥有多个版本的文档。如何解决冲突取决于您——检查冲突的版本并以任何对您的文档结构有意义的方式合并更改。如果您可以在代码中解决它,您可能会从其中一个冲突版本中获取一些数据并将其复制到当前版本中,直到当前版本包含最终合并版本。

完成后,保存文档,删除冲突版本 ( removeOtherVersionsOfItemAtURL:error:),并将当前文件版本标记为已解决。您可能还想用它removeAndReturnError:来真正摆脱旧版本。

有关这方面的更多详细信息,请参阅Apple 解决文档版本冲突的指南

于 2013-02-14T23:36:05.037 回答