我有一个NSDocument
基于 macOS 的应用程序,该应用程序将文件包装器用于文档包。我添加了 iCloud Drive 同步支持。如果我在一台 Mac 上进行更改,文档会成功同步到另一台。
但是,如果我同时在两台不同的 Mac 上编辑一个文档,那么只有其中一个会得到更改;另一个丢失数据,因为似乎文件包装器保存是原子的,所以“云中的真相”选择了其中一个文档。
我想要的是合并来自每台 Mac 的已编辑组件文件——我希望能够在一台 Mac 上编辑一些值,在另一台 Mac 上编辑不同的值,并将两者合并到文档中。该文档的结构是为了支持这一点,在文件包装器中为每个值使用单独的文件。
是否有最佳实践来支持这一点?
我已经有逻辑来检查文件包装器的修改日期,并且只加载从之前加载文档时发生更改的文件。但是,当另一台 Mac 的版本获胜时,它似乎会用更新的修改日期替换这些文件,从而破坏了该机制。我考虑过检查每个组件文件中编码的日期或更改编号,但肯定有更好的方法吗?
我知道 CloudKit 是一种替代方案,也许更适合合并来自多台 Mac 的更改,但使用它将是一个重大变化。如果可能的话,我宁愿坚持NSDocument
同步。