Пакетная ошибка CloudKit: Предыдущая ошибка в атомной зоне
Я пытаюсь спасти CKRecord
используя CKModifyRecordsOperation
и каждый раз, когда я пытаюсь это сделать, я получаю эту первоначальную ошибку:
["CKErrorDescription": не удалось изменить некоторые записи,
"CKPartialErrors": {"CKRecordID: 0x60c000034000; recordName=ABC, zoneID=workspaceZone:DEF" = "CKError 0x60c000257340: \" Сбой пакетного запроса \" (22/2024); \" Запись CKRecordID: 0x7fb2; recordName=ABC, zoneID=workspaceZone:DEF не будет сохранен из-за предыдущей ошибки в атомарной зоне \ ""; },
"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: "Сбой пакетного запроса" (22/2024); "Запись CKRecordID: 0x7fb2f6998a60; recordName=GHI, zoneID=workspaceZone:JKL не будет сохранен из-за предыдущей ошибки в атомарной зоне")
В журнале сервера CloudKit просто говорится, что это BAD_REQUEST, что тоже не очень полезно.
Есть ли способ узнать больше о том, что не так с моей записью?
0 ответов
Это просто означает, что один из ваших запросов не удался. Вы выполняете пакетный запрос с одним или несколькими запросами. В случае неудачи CloudKit не выполняет все запросы, чтобы все оставалось атомарным.
Итак, вы должны подписаться на ошибки в каждой записи с помощью perRecordCompletionBlock
. Затем вы можете увидеть, какая запись не работает и почему. Вы должны распечататьuserInfo
словарь ошибки для более подробной информации.