如何访问 SwiftyDropbox 错误的关联值?
How can I access the associated values of SwiftyDropbox errors?
我一直在使用 SwiftyDropbox,我遇到了一个奇怪的错误问题。具体来说,我不确定如何处理收到响应后提供的闭包回调中的错误,以便我可以获得它们的关联值。
例如,Dropbox.authorizedClient.filesListFolder 的完成处理程序提供了一个
CallError<(Files.ListFolderError)>?
一起工作。我将如何检查它是否是
CallError.HTTPError
,以便我可以从中获取 HTTP 错误代码?现在我只是从错误的 .description 中吸取这些信息,但这似乎不是正确的方法。
这是我试过的。我怀疑我没有理解所涉及的泛型。
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")
}
Enum case 'HTTPError' not found in type 'CallError?'
这里的问题是我们试图打开一个可选的。这个更简单的例子突出了完全相同的问题:
enum Foo {
case a
case b
}
let x: Foo? = nil
switch x {
case .a:
print("a")
case .b:
print("b")
}
Enum case 'a' not found in type 'Foo?'
我们可以切换可选值,因为 Optional
本身就是一个 Enum
,有两种情况:None
和 Some(T)
。
所以当我们切换一个可选的时,Swift 需要这样的代码:
switch someOptional {
case .Some(someValue):
print("do some things")
case .None:
print("someOptional was nil")
}
但这可能不一定特别有用。我们有一个可选的枚举,最终,如果我们在 switch 中处理我们的可选,我们只会有嵌套的 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")
}
我一直在使用 SwiftyDropbox,我遇到了一个奇怪的错误问题。具体来说,我不确定如何处理收到响应后提供的闭包回调中的错误,以便我可以获得它们的关联值。
例如,Dropbox.authorizedClient.filesListFolder 的完成处理程序提供了一个
CallError<(Files.ListFolderError)>?
一起工作。我将如何检查它是否是
CallError.HTTPError
,以便我可以从中获取 HTTP 错误代码?现在我只是从错误的 .description 中吸取这些信息,但这似乎不是正确的方法。
这是我试过的。我怀疑我没有理解所涉及的泛型。
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")
}
Enum case 'HTTPError' not found in type 'CallError?'
这里的问题是我们试图打开一个可选的。这个更简单的例子突出了完全相同的问题:
enum Foo {
case a
case b
}
let x: Foo? = nil
switch x {
case .a:
print("a")
case .b:
print("b")
}
Enum case 'a' not found in type 'Foo?'
我们可以切换可选值,因为 Optional
本身就是一个 Enum
,有两种情况:None
和 Some(T)
。
所以当我们切换一个可选的时,Swift 需要这样的代码:
switch someOptional {
case .Some(someValue):
print("do some things")
case .None:
print("someOptional was nil")
}
但这可能不一定特别有用。我们有一个可选的枚举,最终,如果我们在 switch 中处理我们的可选,我们只会有嵌套的 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")
}