"Atomic increment" 和 CloudKit
"Atomic increment" with CloudKit
我想使用 CloudKit 实现一个计数器。假设我有一个名为 count
的字段,类型为 Int(64)
。我怎样才能实现这个计数器,以便多个用户可以同时递增它?
如果多个用户同时递增此计数器,我的 CKModifyRecordsOperation
可能会因为冲突而失败。我可以接受这个失败并递归地尝试保存我的记录,但这在规模上不起作用。
2011 年,Parse 推出了一个称为原子增量的简单解决方案。您可以编写这样的代码,而不用担心多个用户创建冲突的值:[gameScore incrementKey:@"score" byAmount:[NSNumber numberWithInt:10]
。 (那个posthere)
如何使用 CloudKit 执行此操作?
我不相信 CloudKit 具有类似的内置原子增量功能。但是可以通过将 CKModifyRecordsOperation
上的 savePolicy
设置为 ifServerRecordUnchanged
来实现类似的效果并检查 serverRecordChanged
错误 (docs).
这里有一个稍微不同的问题的现有答案:
我想使用 CloudKit 实现一个计数器。假设我有一个名为 count
的字段,类型为 Int(64)
。我怎样才能实现这个计数器,以便多个用户可以同时递增它?
如果多个用户同时递增此计数器,我的 CKModifyRecordsOperation
可能会因为冲突而失败。我可以接受这个失败并递归地尝试保存我的记录,但这在规模上不起作用。
2011 年,Parse 推出了一个称为原子增量的简单解决方案。您可以编写这样的代码,而不用担心多个用户创建冲突的值:[gameScore incrementKey:@"score" byAmount:[NSNumber numberWithInt:10]
。 (那个posthere)
如何使用 CloudKit 执行此操作?
我不相信 CloudKit 具有类似的内置原子增量功能。但是可以通过将 CKModifyRecordsOperation
上的 savePolicy
设置为 ifServerRecordUnchanged
来实现类似的效果并检查 serverRecordChanged
错误 (docs).
这里有一个稍微不同的问题的现有答案: