首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问SwiftyDropbox错误的相关值?

如何访问SwiftyDropbox错误的相关值?
EN

Stack Overflow用户
提问于 2015-12-02 13:27:08
回答 1查看 394关注 0票数 4

我一直在与SwiftyDropbox合作,而且我对错误有一个奇怪的问题。具体来说,我不知道如何处理在收到响应后提供的闭包回调中的错误,以便获取它们的关联值。

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

代码语言:javascript
复制
CallError<(Files.ListFolderError)>? 

一起工作。我如何去检查它是否是一个

代码语言:javascript
复制
CallError.HTTPError

,这样我就可以从其中提取HTTP错误代码了?现在,我只是从错误的.description中吸取信息,但这似乎不是正确的方法。

这就是我试过的。我怀疑我对仿制药不太了解。

代码语言:javascript
复制
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?’类型中找不到

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 13:44:14

这里的问题是,我们试图打开一个可选的。这个简单的例子突出了同样的问题:

代码语言:javascript
复制
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,有两个例子:NoneSome(T)

因此,当我们切换到可选的代码时,Swift需要这样的代码:

代码语言:javascript
复制
switch someOptional {
case .Some(someValue):
    print("do some things")
case .None:
    print("someOptional was nil")
}

但这可能并不一定特别有用。我们有一个可选的枚举,最后,如果我们在一个开关中处理我们的可选项,我们只会有嵌套的switch语句。相反,我们应该以正常的快速处理选项的方式来处理我们的选择:

代码语言:javascript
复制
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")
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34043932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档