【问题标题】:"Atomic increment" with CloudKitCloudKit 的“原子增量”
【发布时间】:2017-06-20 23:42:41
【问题描述】:

我想使用 CloudKit 实现一个计数器。假设我有一个名为count 的字段,类型为Int(64)。我怎样才能实现这个计数器,以便多个用户可以同时增加它?

如果多个用户同时增加此计数器,我的CKModifyRecordsOperation 可能会因为冲突而失败。我可以接受这个失败并递归地尝试保存我的记录,但这在规模上不起作用。

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

如何使用 CloudKit 做到这一点?

【问题讨论】:

    标签: ios swift cloudkit


    【解决方案1】:

    我不相信 CloudKit 内置了类似的原子增量功能。但是可以通过将 CKModifyRecordsOperation 上的 savePolicy 设置为 ifServerRecordUnchanged 并检查 serverRecordChanged 错误(docs )。

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

    【讨论】:

    • 我希望有一个更优雅的后端解决方案,但这确实有助于使重新保存过程尽可能高效。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    相关资源
    最近更新 更多