我正在构建一个社交媒体应用,其中多个用户可以同时编辑同一个CloudKit记录。我应该实现一个锁定机制,以便一次只能编辑一个用户(这些编辑可能会相互冲突),还是CloudKit有一个方便的内置方式来处理这个?
如果我实现了锁定机制,我的计划是将二进制属性添加到可编辑记录中 - 如果其他人正在编辑,则此属性的值为1,如果当前没有人正在编辑,则该值为0。这听起来像是一种合理的方式吗?
答案 0 :(得分:1)
Cloudkit有一种管理这种称为变更令牌的机制。它类似于每次更改记录时更新的时间戳。当您尝试编写时,您拥有的最后一个更改标记将与您的新数据一起传递到服务器。您可以设置说明服务器应如何处理冲突的策略,例如最后一个写入程序始终覆盖。或者说最后一位作家被拒绝了。
在后一种情况下,第二个编写器将收到NSError。嵌入在该错误的userInfo中的是记录的三个版本:服务器上的当前版本,您尝试提交的版本以及共同的祖先。这允许您比较差异,合并数据并重新保存。或者您可以重新获取记录(将更新您的更改令牌版本),然后再次保存。
我建议观看WWDC cloudkit视频。我相信WWDC 2014年会议231,“高级Cloudkit”和WWDC 2015会议715“Cloudkit提示和技巧”,提供了最有用的信息。