问题描述
我有一个基于 NSDocument
的 macOS 应用程序,它对文档包使用文件包装器。我添加了 iCloud Drive 同步支持。如果我在一台 Mac 上进行更改,文档会成功同步到另一台。
但是,如果我同时在两台不同的 Mac 上编辑文档,则只有其中一台得到更改;另一个丢失数据,因为文件包装器保存似乎是原子的,所以“云中的真相”选择其中一个文档。
我想要的是合并来自每台 Mac 的已编辑组件文件——我希望能够在一台 Mac 上编辑一些值,在另一台 Mac 上编辑不同的值,并将两者合并到文档中。该文档的结构支持这一点,在文件包装器中为每个值使用单独的文件。
是否有支持这一点的最佳实践?
我已经有了检查文件包装器修改日期的逻辑,并且只加载从之前加载文档时更改过的文件。但是当来自另一台 Mac 的版本获胜时,它似乎用更近的修改日期替换了这些文件,从而破坏了该机制。我想过检查每个组件文件中编码的日期或更改编号,但肯定有更好的方法吗?
我知道 CloudKit 是一种替代方案,也许更适合合并来自多台 Mac 的更改,但使用它会是一个重大变化。如果可能,我更愿意坚持使用 NSDocument
同步。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)