gpt4 book ai didi

ios - Alamofire+组合 : how to get custom error type out of AFError

转载 作者:行者123 更新时间:2023-12-04 03:56:24 26 4
gpt4 key购买 nike

我正在使用 Alamofire 和它的 Combine 助手来做一个简单的网络请求,如下所示:

class AlamofireClient {
func getData<T: Decodable>(request: URLRequestConvertible) -> AnyPublisher<T, APIError> {
AF.request(request)
.validate()
.publishDecodable(type: T.self)
.value()
.mapError(APIError.init(error:))
.eraseToAnyPublisher()
}
}

enum APIError: Error {
init(error: AFError) {
self = .network
}

case network
case custom(Int, String, String)

var message: String {
switch self {
case .network:
return "Network Error"
case .custom(let code, let message, let technicalMessage):
return "Custom error info are: \(code) -- \(message) -- \(technicalMessage)"
}
}
}
我一直在提取从服务器返回的自定义错误信息,在我的情况下有 3 个项目:代码、消息和技术消息。

最佳答案

所以我在类似的情况下工作过,我想通过我自己的错误,而不是 Alamofire。请参阅我使用的以下代码实现,它对我有用。希望它也能帮助一些人。

 public func request<T>(response: @escaping (AnyPublisher<T, MyNetworkError>) -> ()) where T : Decodable {
response(
MyNetwork.shared.sendRequest(path: “sample/url/endpoints”)
.validate()
.publishDecodable(type: T.self)
.value()
.mapError{MyNetworkError.networkError(error: ($0 as Error))}
.eraseToAnyPublisher())
}
虽然我自己的错误如下所示。
public enum MyNetworkError: Error {
case networkError(error: Error)
}

关于ios - Alamofire+组合 : how to get custom error type out of AFError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63806177/

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