使用CKModifyOperation与CoreData问题进行Cloudkit同步

时间:2015-08-08 09:55:28

标签: database core-data cloud sync cloudkit

尝试同步cloudkit和coredata。有两个表格:

  1. 家长
  2. 孩子(孩子有CKReference to Parent。即从孩子到父母的向后引用。)
  3. 现在根据苹果的说法,这是我们必须遵循的步骤。

    1. 获取本地更改 - 通过为每条记录维护更新变量来完成。比如3-delete,1-create和2-update。
    2. 将本地更改上传到云 - 这里我使用CKModifyRecordsOperation并将插入的记录提供为更新值为1或3和2的已删除记录。 (原子以避免不一致)
    3. 纠正冲突(如果有的话)(因此,此处选择了具有更大修改日期的记录并解决了冲突。)
    4. 获取服务器更改(此处使用CKFetchChangesOperation获取从上次更改令牌对服务器所做的任何更改)
    5. 将服务器更改应用于local()
    6. 现在说我有2台设备,并已使用以下数据同步它们

      1. 父-1
      2. P1-Child1(引用Parent-1)
      3. 现在在1个设备中,我删除了Parent-1和P1-Child1并让它同步到云端。在cloudkit仪表板上,我验证父和子都已成功删除。

        在设备2中,现在我将P1-Child2的另一个孩子添加到上一个父级。考虑以上步骤

        1. LocalChanges: - (P1-Child2)
        2. 上传到云端: - (P1-Child2)
        3. 冲突: - 无
        4. 从云中获取更改:(已插入:P1-Child2,已删除:Parent-1,P1-Child1)
        5. 将此应用于本地。
        6. P1-Child2在没有父级的云上成功保存。所以现在留下了没有父母的儿童记录。

          你能帮助我找出解决这个问题的正确方法吗? 我想如果苹果可以在其文档中提到的CKModifyOperation上给出错误,那么我就知道父记录不存在,我可以与孩子一起重新保存或上传父记录。

0 个答案:

没有答案