gpt4 book ai didi

ios - 在 Swift 中使用枚举设计错误类型

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:58 25 4
gpt4 key购买 nike

也许我只是完全想多了,但我正在尝试使用枚举来处理来 self 正在集成的 API 的错误。

从这个 API 的 swagger 文档中,我可以看到所有可能返回的响应。我已经将它们写成 BaseError 枚举:

enum BaseError: Error {
case badRequest // 400
case unauthorized // 401
case forbidden // 403
case unhandledError // XXX
...
}

现在我的客户就是我的问题开始的地方。

我最初的希望是采用这个 BaseError 枚举,并根据我所在的客户端向其扩展/添加其他案例。

类似于:

enum ClientSpecificError: BaseError {
case clientError
}

这将允许我返回类似 ClientSpecificError.unauthorized 的错误


现在我知道这是不可能的,因为枚举不能继承其他枚举,但我对如何实现这一目标缺少一些理解。

问题

有没有其他方法可以使用枚举来完成此任务?

这甚至是“最佳实践”吗?

最佳答案

你可以做的是使用 associated values 并将低级错误存储在专用案例中。例如:

enum ClientSpecificError: Error {
case clientError
case baseError(BaseError)
}

苹果文档:

However, it is sometimes useful to be able to store associated values of other types alongside these case values. This enables you to store additional custom information along with the case value, and permits this information to vary each time you use that case in your code.

关于ios - 在 Swift 中使用枚举设计错误类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47372054/

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