簡體   English   中英

如何訪問SwiftyDropbox錯誤的關聯值?

[英]How can I access the associated values of SwiftyDropbox errors?

我一直在使用SwiftyDropbox,我有一個奇怪的錯誤問題。 具體來說,我不確定如何處理收到響應后提供的閉包回調中的錯誤,以便我可以得到它們的關聯值。

例如,Dropbox.authorizedClient.filesListFolder的完成處理程序提供了一個

CallError<(Files.ListFolderError)>? 

跟...共事。 我該如何檢查它是否是一個

CallError.HTTPError

,以便我可以從中獲取HTTP錯誤代碼? 現在我只是從錯誤的.description中吮吸那些信息,但這似乎不是正確的方法。

這就是我嘗試過的。 我懷疑我對所涉及的仿制葯沒有理解。

Xcode截圖

client.filesListFolder(path: "", recursive: false).response({ (listFolderResult, listFolderError) -> Void in

    switch listFolderError {
    case let .HTTPError(code, message, requestId):
        print("http error")
    default:
        print("not a http error")
    }

在'CallError?'類型中找不到枚舉案例'HTTPError'

這里的問題是我們正在嘗試打開一個可選項。 這個更簡單的例子突出了完全相同的問題:

在此輸入圖像描述

enum Foo {
    case a
    case b
}

let x: Foo? = nil

switch x {
case .a:
    print("a")
case .b:
    print("b")
}

在'Foo'類型中找不到枚舉案'a'?

我們可以切換選項,因為Optional本身就是一個Enum ,有兩種情況: NoneSome(T)

所以當我們切換一個可選項時,Swift需要這樣的代碼:

switch someOptional {
case .Some(someValue):
    print("do some things")
case .None:
    print("someOptional was nil")
}

但這可能不一定特別有用。 我們有一個可選的枚舉,最后,如果我們在交換機中處理我們的可選項,我們只需要嵌套的switch語句。 相反,我們應該以正常的Swift方式處理我們的可選項處理選項:

if let error = listFolderError {
    switch error {
    case let .HTTPError(code, message, requestID):
        print("http error")
    default:
        print("some other error")
    }
} else {
    print("there was no error")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM