我一直在与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‘在'CallError?’类型中找不到
发布于 2015-12-02 13:44:14
这里的问题是,我们试图打开一个可选的。这个简单的例子突出了同样的问题:

enum Foo {
case a
case b
}
let x: Foo? = nil
switch x {
case .a:
print("a")
case .b:
print("b")
}Enum case 'a‘在Foo类型中找不到?
我们可以切换选项,因为Optional本身就是一个Enum,有两个例子:None和Some(T)。
因此,当我们切换到可选的代码时,Swift需要这样的代码:
switch someOptional {
case .Some(someValue):
print("do some things")
case .None:
print("someOptional was nil")
}但这可能并不一定特别有用。我们有一个可选的枚举,最后,如果我们在一个开关中处理我们的可选项,我们只会有嵌套的switch语句。相反,我们应该以正常的快速处理选项的方式来处理我们的选择:
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")
}https://stackoverflow.com/questions/34043932
复制相似问题