尝试同步cloudkit和coredata。有两个表格:
- 家长
- 孩子(孩子有CKReference to Parent。即从孩子到父母的向后引用。)
醇>
现在根据苹果的说法,这是我们必须遵循的步骤。
- 获取本地更改 - 通过为每条记录维护更新变量来完成。比如3-delete,1-create和2-update。
- 将本地更改上传到云 - 这里我使用CKModifyRecordsOperation并将插入的记录提供为更新值为1或3和2的已删除记录。 (原子以避免不一致)
- 纠正冲突(如果有的话)(因此,此处选择了具有更大修改日期的记录并解决了冲突。)
- 获取服务器更改(此处使用CKFetchChangesOperation获取从上次更改令牌对服务器所做的任何更改)
- 将服务器更改应用于local()
醇>
现在说我有2台设备,并已使用以下数据同步它们
- 父-1
- P1-Child1(引用Parent-1)
醇>
现在在1个设备中,我删除了Parent-1和P1-Child1并让它同步到云端。在cloudkit仪表板上,我验证父和子都已成功删除。
在设备2中,现在我将P1-Child2的另一个孩子添加到上一个父级。考虑以上步骤
- LocalChanges: - (P1-Child2)
- 上传到云端: - (P1-Child2)
- 冲突: - 无
- 从云中获取更改:(已插入:P1-Child2,已删除:Parent-1,P1-Child1)
- 将此应用于本地。
醇>
P1-Child2在没有父级的云上成功保存。所以现在留下了没有父母的儿童记录。
你能帮助我找出解决这个问题的正确方法吗?
我想如果苹果可以在其文档中提到的CKModifyOperation上给出错误,那么我就知道父记录不存在,我可以与孩子一起重新保存或上传父记录。