CloudKit:CKModifyRecordsOperation的内部错误

时间:2018-04-06 03:05:52

标签: ios swift xcode cloudkit

我遇到了CloudKit的问题,我无法弄明白。我希望有人有一些想法或见解。我从Internal Error随机获得CKModifyRecordsOperation,其中包含说明:Couldn't decrypt record returned from the server in response to our save of record

详情

我的应用程序有几个本地对象可以同步到CloudKit。每个对象类型都有一个单独的CloudKit RecordType,每个本地类型都有自己的更新程序,它为该对象类型创建自己的CKModifyRecordsOperation

代码很简单:

let op = CKModifyRecordsOperation(recordsToSave: records, recordIDsToDelete: nil)
op.modifyRecordsCompletionBlock = { (modifiedRecords: [CKRecord]?, _: [CKRecordID]?, error: Error?) -> Void in
   let remoteError = RemoteError(cloudKitError: error as NSError?)
   let remoteRecords = modifiedRecords?.compactMap { RemoteRecord(record: $0)} ?? []
   completion(remoteRecords, remoteError)
}
database.add(op)

RemoteErrorRemoteRecord类型只是帮助者,可以从CloudKit创建更适合应用程序的错误和记录版本。

我观察到的内容

我认为这与格式错误的CKRecord对象无关,因为我可以一遍又一遍地保存相同的记录而没有任何问题。然后,随机发生这种情况。

当我有两个Updater个对象发送CKModifyRecordsOperations彼此非常接近时,似乎就会发生这种情况。虽然这种情况经常发生而没有问题,但我唯一一次看到问题的时候就是这种情况(到目前为止)。

当问题发生时,我首先得到第二次提交操作的Zone Busy错误,然后是上面的Internal Error,这与第一次提交的操作有关。

也许第一个操作遇到某种问题,导致第二个操作收到Zone Busy。我不确定。

虽然我不知道可能是什么原因,但在考虑它时,我想知道是否有两个非常接近的操作是否会以某种方式导致CloudKit问题?似乎很难相信,但我没有看到另一个原因。

我可能会尝试重新编写代码以批量修改,但CloudKit无法处理此问题似乎很奇怪。而且,经常经常处理它。

思考吗

有没有人对可能导致此问题或其他事情尝试调试的问题有任何想法?我想它可能只是一个我必须处理的CloudKit问题。但理想情况下,这只是我正在做的事情,我可以解决。

我已向Apple提交了错误报告,因为他们在Internal Error的文档中提出了要求。

谢谢。

0 个答案:

没有答案