我目前正在为我正在开发的应用处理CloudKit错误。我需要处理的一个主要问题是:多个用户同时写入同一条记录。
使用CloudKit(在Swift中)处理此问题的最佳方法是什么?我是否需要在记录上添加某种锁定,以便一次只能编辑一个用户? CloudKit会自动为我执行此操作吗?如果是这样,我应该在一段时间后重新尝试操作吗?我是否需要一个队列来保存等待在该记录上完成的任务?
任何有关CloudKit打算如何处理这些问题的见解都将不胜感激!谢谢!
答案 0 :(得分:0)
您必须以适合您的应用程序的方式处理CKRecord冲突。一种处理方法是最新更新获胜。为了使其正常工作,您可以在CKRecord上添加一个字段,例如lastModified。
您可以将savePolicy
的{{1}}设置为CKModifyRecordsOperation
保存记录时,Cloudkit会引发您ifServerRecordUnchanged
错误。
遇到此错误,您还将拥有CKRecord的3个版本。
1.)您尝试保存的记录的先前版本,
2.)您尝试保存的记录的确切版本,
3.)提交请求时服务器保留的版本。
通过比较CKRecord的serverRecordChanged
字段,您可以确定哪个CKRecord获胜。