CloudKit的“原子增量”

时间:2017-06-20 23:42:42

标签: ios swift cloudkit

我想使用CloudKit实现一个计数器。假设我有一个名为count的字段Int(64)。如何实现此计数器,以便多个用户可以同时增加它?

如果多个用户同时递增此计数器,则CKModifyRecordsOperation可能因冲突而失败。我可以采取这种失败并递归地尝试保存我的记录,但这不能大规模地工作。

2011年,Parse推出了一个名为原子增量的简单解决方案。您可以编写这样的代码,而不必担心多个用户创建冲突的值:[gameScore incrementKey:@"score" byAmount:[NSNumber numberWithInt:10]。 (那篇文章here

如何使用CloudKit执行此操作?

1 个答案:

答案 0 :(得分:5)

我不相信CloudKit内置了类似的原子增量功能。但是通过在savePolicy上设置CKModifyRecordsOperationifServerRecordUnchanged并检查a,可以实现类似的效果serverRecordChanged错误(docs)。

这里有一个稍微不同的问题答案:Increment field value in a CKRecord variable without fetching?