修改CKRecords时CloudKit错误:"区域忙"

Epa*_*aga 1 ios cloudkit

这是一段代码,我在其中修改用户私有CloudKit DB上的一些记录.

    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)
Run Code Online (Sandbox Code Playgroud)

这非常有效:

 modified all ... 284 w err 'nil' Optional([:])
Run Code Online (Sandbox Code Playgroud)

但是我时不时地得到以下输出:

 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)>])
Run Code Online (Sandbox Code Playgroud)

我假设这是CloudKit方面的某种打嗝 - 但我如何检测到这一点?我应该怎么处理?

har*_*orn 6

此错误表示您的请求正常,但云服务器处理请求超载.您应该等待一段时间后再次尝试操作.这也是在WWDC 2014视频231 - Advanced CloudKit结束时提到的.

可以在此处找到一些其他信息:CloudKit Framework常量参考