【问题标题】:iCloud-CoreData resolve conflictsiCloud-CoreData 解决冲突
【发布时间】:2015-03-22 15:22:51
【问题描述】:

我正在使用适用于 iPad 的 Ulysses 应用程序。这个应用程序使用 iCloud 作为同步系统。如果发生冲突,应用程序会显示一个包含所涉及设备描述的弹出窗口。

特别是:

  • 设备名称(例如 Matteo 的 Macbook Pro)
  • 时间戳(例如 2015 年 3 月 22 日 9:34)

选择正确的便笺版本是不可能完成同步的。

我已经设置了 icloud 堆栈来处理同步,它工作得很好,但我不知道在发生冲突时如何检索那种信息。

有什么建议吗?

【问题讨论】:

  • 欢迎来到stackoverflow。你的问题太笼统了。您需要展示最少的研究,然后在遇到困难时询问社区。​​span>
  • 我已经设置了 icloud 堆栈来处理同步,它工作得很好,但我不知道如何在发生冲突的情况下检索那种信息(设备名称、时间戳)。谢谢
  • 好的,你应该在你的问题中提到这一点。您是否尝试过制造冲突并看看会发生什么?
  • 它自动管理与默认策略的冲突。它调用与事件“NSPersistentStoreDidImportUbiquitousContentChangesNotification”关联的回调。在回调中,作为参数,我有一个 NSNotification* 但它没有那个信息... PS:感谢您对我的问题提出的建议 :)

标签: core-data ios8 icloud merge-conflict-resolution


【解决方案1】:

收听NSPersistentStoreDidImportUbiquitousContentChangesNotification 而不是仅仅调用mergeChangesFromContextDidSaveNotification:,首先检查两个版本。

这可以通过检索通知的userInfo 字典来完成,该字典应包含NSUpdatedObjectsKey 下更改对象的NSManagedObjectIDs。

【讨论】:

  • 是的,是的。我得到的 userInfo 的实际打印描述:{ deleted = "{(\n)}";插入 = "{(\n)}";更新 = "{(\n 0xd00000002004007c \n)}";但是我如何才能检索有关冲突中涉及的设备的信息和两个设备的更改时间戳?
猜你喜欢
  • 2014-01-26
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多