2016-10-02 31 views
2

恢復的錯誤越來越.partialFailureCKError後,我一直在努力恢復id和相應的錯誤,但我有問題...與CKPartialErrorsByItemIDKey

現在我使用:

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\">"; 
}) 

當我從理解我應該從userInfo字典獲得NSDictionary<CKRecordID, (CK)Error>字典,CKPartialErrorsByItemIDKeyNSDictionary<NSObject, Error>來自partialErrorsByItemID方法。基於第一次打印,該方法不適用於這種情況,但關鍵是給我一個CKRecordID和CKError的字典。 我不明白爲什麼第二個打印沒有達到?

回答

1

根據文檔,你會得到一個NSDictionary,而不是一個Swift字典。

嘗試:

if let dictionary = error.userInfo[CKPartialErrorsByItemIDKey] as? NSDictionary { 
    print("partialErrors #\(dictionary.count)") 
} 
+0

真棒的感謝! –