ios - "Atomic increment"与 CloudKit

标签 ios swift cloudkit

我想使用 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/

相关文章:

ios - 从 Collection View 中拖动适用于 iPad,但不适用于 iPhone。怎么会?

iphone - 多个 Xcode,如何选择打开哪个 xcodeproj 文件

ios - 我始终从应用程序内保持登录 Facebook

macos - swift NSViewController

ios - CloudKit - 如何共享多个记录和检索共享记录?

iOS 请求始终授权只是第一次显示权限警报

ios - 单元测试网络调用(失败测试)- Swift

cocoa - 在文档加载时禁用 NSUndoManager 分组调用

objective-c - 使用 recordName 获取单个记录,它应该从 icloud 返回特定字段

swift - CKContainer.discoverAllIdentities 总是失败