2

我正在尝试CKRecord使用 a保存 a CKModifyRecordsOperation,每次尝试时,都会收到以下初始错误:

["CKErrorDescription": 部分记录修改失败,

"CKPartialErrors": { "CKRecordID: 0x60c000034000; recordName=ABC, zoneID=workspaceZone:DEF" = "CKError 0x60c000257340: \"批处理请求失败\" (22/2024); \"记录 CKRecordID: 0x7fb2f6998a60; recordName=ABC, zoneID=workspaceZone:DEF 将不会被保存,因为之前在 atomic zone 中的错误\""; },

“NSDebugDescription”:CKInternalErrorDomain:1011,“NSUnderlyingError”:CKError 0x60c000248af0:“部分故障”(1011);“修改部分记录失败”;部分错误:{ ... 1 "Batch Request Failed" CKError's omited ... },

“NSLocalizedDescription”:修改部分记录失败]

然后我像这样解析批处理的各个错误:

if let errorItems = error.partialErrorsByItemID {
  for item in errorItems{
    if let itemError = item.value as? CKError{
      print("::: Individual Error in Batch :::")
      print(itemError)
      print(":::::")
    }
  }
}

但所有个别错误说的是:

CKError(_nsError: CKError 0x60c000257340: "Batch Request Failed" (22/2024); "Record CKRecordID: 0x7fb2f6998a60; recordName=GHI, zoneID=workspaceZone:JKL 将不会被保存,因为之前在 atomic zone 中的错误")

CloudKit 服务器日志只是说它是一个BAD_REQUEST,也不是很有帮助。

有没有办法获得更多关于我的记录有什么问题的详细信息?

4

1 回答 1

1

这只是意味着您的一个请求失败了。您正在使用一个或多个请求执行批处理请求。如果一个失败,CloudKit 会失败所有保持原子性的请求。

因此,您应该使用 订阅每条记录上的错误perRecordCompletionBlock。然后,您可以查看失败的记录以及失败的原因。您应该打印出userInfo错误字典以获取更多详细信息。

于 2019-08-18T12:30:33.553 回答