CloudKit:多个用户同时写入同一记录

时间:2017-05-03 05:02:03

标签: swift error-handling cloudkit

我目前正在为我正在开发的应用处理CloudKit错误。我需要处理的一个主要问题是:多个用户同时写入同一条记录。

使用CloudKit(在Swift中)处理此问题的最佳方法是什么?我是否需要在记录上添加某种锁定,以便一次只能编辑一个用户? CloudKit会自动为我执行此操作吗?如果是这样,我应该在一段时间后重新尝试操作吗?我是否需要一个队列来保存等待在该记录上完成的任务?

任何有关CloudKit打算如何处理这些问题的见解都将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

您必须以适合您的应用程序的方式处理CKRecord冲突。一种处理方法是最新更新获胜。为了使其正常工作,您可以在CKRecord上添加一个字段,例如lastModified。 您可以将savePolicy的{​​{1}}设置为CKModifyRecordsOperation 保存记录时,Cloudkit会引发您ifServerRecordUnchanged错误。 遇到此错误,您还将拥有CKRecord的3个版本。 1.)您尝试保存的记录的先前版本, 2.)您尝试保存的记录的确切版本, 3.)提交请求时服务器保留的版本。

通过比较CKRecord的serverRecordChanged字段,您可以确定哪个CKRecord获胜。