gpt4 book ai didi

ios - 如何访问 SwiftyDropbox 错误的关联值?

转载 作者:搜寻专家 更新时间:2023-10-31 19:34:24 28 4
gpt4 key购买 nike

我一直在使用 SwiftyDropbox,我遇到了一个奇怪的错误问题。具体来说,我不确定如何处理收到响应后提供的闭包回调中的错误,以便我可以获得它们的关联值。

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

CallError<(Files.ListFolderError)>? 

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

CallError.HTTPError

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

这是我试过的。我怀疑我无法理解所涉及的泛型。

Xcode Screenshot

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?'

最佳答案

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

enter image description here

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,有两种情况:NoneSome(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")
}

关于ios - 如何访问 SwiftyDropbox 错误的关联值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34043932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com