通过 iCloud 同步 NSDocument 文件包装器似乎不支持同时在多台计算机上进行编辑

问题描述

我有一个基于 NSDocument 的 macOS 应用程序,它对文档包使用文件包装器。我添加了 iCloud Drive 同步支持。如果我在一台 Mac 上进行更改,文档会成功同步到另一台。

但是,如果我同时在两台不同的 Mac 上编辑文档,则只有其中一台得到更改;另一个丢失数据,因为文件包装器保存似乎是原子的,所以“云中的真相”选择其中一个文档。

我想要的是合并来自每台 Mac 的已编辑组件文件——我希望能够在一台 Mac 上编辑一些值,在另一台 Mac 上编辑不同的值,并将两者合并到文档中。该文档的结构支持这一点,在文件包装器中为每个值使用单独的文件

是否有支持这一点的最佳实践?

我已经有了检查文件包装器修改日期的逻辑,并且只加载从之前加载文档时更改过的文件。但是当来自另一台 Mac 的版本获胜时,它似乎用更近的修改日期替换了这些文件,从而破坏了该机制。我想过检查每个组件文件中编码的日期或更改编号,但肯定有更好的方法吗?

我知道 CloudKit 是一种替代方案,也许更适合合并来自多台 Mac 的更改,但使用它会是一个重大变化。如果可能,我更愿意坚持使用 NSDocument 同步。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...