我想使用CloudKit实现一个计数器。假设我有一个名为count
的字段Int(64)
。如何实现此计数器,以便多个用户可以同时增加它?
如果多个用户同时递增此计数器,则CKModifyRecordsOperation
可能因冲突而失败。我可以采取这种失败并递归地尝试保存我的记录,但这不能大规模地工作。
2011年,Parse推出了一个名为原子增量的简单解决方案。您可以编写这样的代码,而不必担心多个用户创建冲突的值:[gameScore incrementKey:@"score" byAmount:[NSNumber numberWithInt:10]
。 (那篇文章here)
如何使用CloudKit执行此操作?
答案 0 :(得分:5)
我不相信CloudKit内置了类似的原子增量功能。但是通过在savePolicy
上设置CKModifyRecordsOperation
到ifServerRecordUnchanged
并检查a,可以实现类似的效果serverRecordChanged
错误(docs)。
这里有一个稍微不同的问题答案:Increment field value in a CKRecord variable without fetching?