CloudKit 修改 CKRecords 时出错:"Zone Busy"

CloudKit Error when modifying CKRecords: "Zone Busy"

这是一段代码,我在其中修改了用户私人 CloudKit 数据库中的一些记录。

    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 方面的某种问题 - 但我如何检测到这一点?我该如何处理?

此错误表示您的请求没有问题,但云服务器在处理请求时超载。您应该等待并在一段时间后再次尝试该操作。在 WWDC 2014 视频 231 - 高级 CloudKit.

的结尾也提到了这一点

可以在此处找到一些附加信息:CloudKit Framework Constants Reference