修改 CKRecords 时出现 CloudKit 错误:“Zone Busy”
Posted
技术标签:
【中文标题】修改 CKRecords 时出现 CloudKit 错误:“Zone Busy”【英文标题】:CloudKit Error when modifying CKRecords: "Zone Busy" 【发布时间】:2015-05-13 19:58:27 【问题描述】:这是我正在修改用户私有 CloudKit DB 上的一些记录的代码的 sn-p。
let op = CKModifyRecordsOperation(recordsToSave: recordsToModify, recordIDsToDelete: [])
op.savePolicy = CKRecordSavePolicy.ChangedKeys
op.modifyRecordsCompletionBlock = saved, deleted, err in
println("modified all ... \(saved.count) w err '\(err)' \(err != nil ? err.userInfo : [:])")
self.privateDB.addOperation(op)
通常这很好用:
modified all ... 284 w err 'nil' Optional([:])
但我时不时会得到以下输出:
modified all ... 0 w err '<CKError 0x7f9210e92840:"Zone Busy" (23/2029);
"Zone busy">' Optional([NSDebugDescription: CKInternalErrorDomain: 2029,
NSLocalizedDescription: Zone busy, NSUnderlyingError: <CKError 0x7f9210ea7dd0:
"Unknown Error" (2029)>])
我假设这是 CloudKit 方面的某种小问题 - 但我如何检测到这一点?我该如何处理?
【问题讨论】:
【参考方案1】:此错误表示您的请求正常,但云服务器已超载处理请求。您应该等待一段时间后再次尝试该操作。 WWDC 2014 视频 231 - Advanced CloudKit 的结尾也提到了这一点。
可以在此处找到一些其他信息:CloudKit Framework Constants Reference
【讨论】:
优秀的答案。谢谢! 我偶尔会收到 Zone Busy 错误。但它 - 似乎 - 交易仍在进行,无需我重试!有谁知道这是否可能? @GregMaletic 确保您只发送一笔交易。您可能同时发送多个交易。这解释了为什么它第一次通过而您第二次收到错误。以上是关于修改 CKRecords 时出现 CloudKit 错误:“Zone Busy”的主要内容,如果未能解决你的问题,请参考以下文章
将 CloudKit 记录保存到本地文件保存除 CKAsset 之外的所有字段