我正在开发一个iOS应用程序,而且我在Core Data中遇到了冲突管理的问题。到目前为止,我已经构建了一个核心数据堆栈,其实体与iCloud同步,没有太大麻烦。
但冲突管理仍然是一个巨大的问题。
Apple的UIManagedDocument公开了一个公共界面,该界面旨在使开发人员能够轻松处理文档版本冲突。在我的应用程序中,文档(我的核心数据堆栈中的NSManagedObjects)需要与其他NSManagedObjects建立关系 - 据我所知,这意味着我需要使用传统的Core Data堆栈,而不是UIManagedDocument。这是真的吗?
据我所知,在正常情况下处理冲突管理的唯一方法是"核心数据堆栈是子类NSMergePolicy。这是对的吗?
如果(1)和(2)的答案为YES,那么我需要继承NSMergePolicy以便:
如果用户在iCloud不可用时编辑设备X和设备Y上的文档A(例如,因为设备都处于飞行模式),则NSMergePolicy子类需要将这两个版本的文档A保存到iCloud商店。这就是Apple的Notes应用程序的工作原理。
不幸的是,我发现几乎没有关于如何为这样的任务正确地继承NSMergePolicy的信息。 Apple的文档在这个主题上几乎没什么可说的。你能解释一下如何处理这项任务,或者指导我进入一个深入的教程/示例项目吗?
我非常感谢你的帮助。在我确定正确的方法之前,我会犹豫不决。
谢谢, 罗伯特