使用 CKPartialErrorsByItemIDKey 恢复错误
recovering errors with CKPartialErrorsByItemIDKey
获得 .partialFailure
CKError
后,我一直在尝试恢复 ID 和相应的错误,但我遇到了问题...
现在我正在使用:
print("pE \(error.partialErrorsByItemID) or \(error.userInfo[CKPartialErrorsByItemIDKey])")
if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? [NSObject: Error] {
print("partialErrors #\(dictionary.count)") // <-- Not reaching this...
我也试过以下方法:
if let dictionary = error.partialErrorsByItemID { // <-- error.pEBIID returns nil
和:
if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? [CKRecord : CKError /* and Error */] { // <-- but neither triggers the if-let
第一个打印在控制台中显示这个(我将打开的标签向左切换,这样它们就不会被解释为 html):
pE nil or Optional({
">CKRecordID: 0x7b95ace0; CentralTableView:(_defaultZone:__defaultOwner__)>" = ">CKError 0x7a7e4cf0: \"Server Record Changed\" (14/2004); server message = \"record to insert already exists\"; uuid = B7AD7528-D8AE-4DCB-91FF-16B5271110F5; container ID = \"iCloud.com.yadayadayada\">";
})
据我从文档中了解到,我应该使用 CKPartialErrorsByItemIDKey
从 userInfo
字典中获取 NSDictionary<CKRecordID, (CK)Error>
并从 partialErrorsByItemID
方法中获取 NSDictionary<NSObject, Error>
.根据第一次打印,该方法在这种情况下不起作用,但关键是给了我一个 CKRecordID 和 CKError 的字典。 我不明白为什么没有打印第二张?
根据文档,您得到的是 NSDictionary
,而不是 Swift 字典。
尝试:
if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? NSDictionary {
print("partialErrors #\(dictionary.count)")
}
获得 .partialFailure
CKError
后,我一直在尝试恢复 ID 和相应的错误,但我遇到了问题...
现在我正在使用:
print("pE \(error.partialErrorsByItemID) or \(error.userInfo[CKPartialErrorsByItemIDKey])")
if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? [NSObject: Error] {
print("partialErrors #\(dictionary.count)") // <-- Not reaching this...
我也试过以下方法:
if let dictionary = error.partialErrorsByItemID { // <-- error.pEBIID returns nil
和:
if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? [CKRecord : CKError /* and Error */] { // <-- but neither triggers the if-let
第一个打印在控制台中显示这个(我将打开的标签向左切换,这样它们就不会被解释为 html):
pE nil or Optional({
">CKRecordID: 0x7b95ace0; CentralTableView:(_defaultZone:__defaultOwner__)>" = ">CKError 0x7a7e4cf0: \"Server Record Changed\" (14/2004); server message = \"record to insert already exists\"; uuid = B7AD7528-D8AE-4DCB-91FF-16B5271110F5; container ID = \"iCloud.com.yadayadayada\">";
})
据我从文档中了解到,我应该使用 CKPartialErrorsByItemIDKey
从 userInfo
字典中获取 NSDictionary<CKRecordID, (CK)Error>
并从 partialErrorsByItemID
方法中获取 NSDictionary<NSObject, Error>
.根据第一次打印,该方法在这种情况下不起作用,但关键是给了我一个 CKRecordID 和 CKError 的字典。 我不明白为什么没有打印第二张?
根据文档,您得到的是 NSDictionary
,而不是 Swift 字典。
尝试:
if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? NSDictionary {
print("partialErrors #\(dictionary.count)")
}