【发布时间】:2022-09-28 14:17:16
【问题描述】:
我正在尝试创建一个使用 NSPersistentCloudKitContainer 和核心数据的类似笔记的应用程序。
该商店使用 NSMergeByPropertyObjectTrumpMergePolicy,这几乎适用于所有属性。例如,如果在两个不同的设备上更改了文件的名称,则可以使用最新的值。
问题是,如果同时在两个设备上更改注释文本,则不能被最新值覆盖。它需要被检测为冲突,以便用户可以选择他们想要保留的版本。
我可以通过在一台设备上关闭 wifi 并写入内容来复制该行为,然后同时在另一台设备上写入内容。当我重新打开 wifi 时,最后保存更改的设备会完全覆盖其他设备的文本。
我想要完成的是检测何时存在文本冲突,然后创建一个名为“冲突副本”的重复文件。如果有人能告诉我 Apple Notes 如何神奇地合并文本而不会产生冲突,那就加分。我真的只需要一个简单的解决方案,尽管它可以防止数据丢失。
任何正确方向的帮助将不胜感激!
-
如果还是卡住。还没有尝试这个。但我认为需要的是自定义
NSMergePolicy并将其分配给viewContext(或其他moc 实例,如果使用)。使用域特定策略在子字符串级别触发用户解析或属性合并,结合两组更改以解决所有冲突(没有内部信息,但我猜这是 Apple 所做的)。 -
找不到特别接近的东西,但这看起来很有趣medium.com/@deeps_ramesh/custom-merge-policy-7badcc2f8b11。
标签: swift xcode core-data icloud