【问题标题】:CloudKit Batch Error: Previous Error in Atomic ZoneCloudKit 批处理错误:原子区中的先前错误
【发布时间】:2018-06-26 21:31:48
【问题描述】:

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

["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 “批量请求失败” CKError 被省略 ... },

“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,这也不是很有帮助。

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

【问题讨论】:

  • Clifton,您能否尝试找出导致此错误的记录,并从那里找出问题所在? 22/2024 的意义是什么?您是否正在修改 2024 条记录?可能是记录 22 有问题吗?一个疯狂的猜测?让我知道?这里给出的其他细节是什么? GHI? JKL?也指?这是否有助于您更接近问题?
  • 我终于能够通过删除我的区域并重新创建它来完成这项工作。我认为它以某种方式损坏了,因为我的一种记录类型不接受新的记录创作。在删除记录类型,创建它,删除区域,然后再次创建它之后,它又可以工作了。这可能会发生很奇怪(也很可怕)!
  • 很好,但出于兴趣...有 2024 条记录吗?
  • 不,我在所有记录类型中总共只有大约 15 条记录。

标签: cloudkit ckerror


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-09-19
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 2010-11-12
    • 2014-05-21
    • 2018-04-21
    相关资源
    最近更新 更多