我想使用 CloudKit 实现一个计数器。假设我有一个名为 count
的字段,类型为 Int(64)
。我怎样才能实现这个计数器,以便多个用户可以同时递增它?
如果多个用户同时增加此计数器,我的 CKModifyRecordsOperation
可能会因为冲突而失败。我可以接受这次失败并递归地尝试保存我的记录,但这在大规模情况下不起作用。
2011 年,Parse 推出了一个简单的解决方案,称为原子增量。您可以编写这样的代码,而不必担心多个用户创建冲突的值:[gameScore incrementKey:@"score"byAmount:[NSNumber numberWithInt:10]
。 (那个帖子here)
我如何使用 CloudKit 做到这一点?
最佳答案
我不相信 CloudKit 内置了类似的原子增量功能。但是可以通过将 CKModifyRecordsOperation
上的 savePolicy
设置为 ifServerRecordUnchanged< 来实现类似的效果
并检查 serverRecordChanged
错误 ( docs )。
这里有一个稍微不同的问题的现有答案:Increment field value in a CKRecord variable without fetching?
关于ios - "Atomic increment"与 CloudKit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664664/