【发布时间】:2020-09-09 06:47:26
【问题描述】:
我正在使用 Alamofire 及其组合助手来执行简单的网络请求,如下所示:
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 中的默认验证。您可以在 Alamofire 中为请求设置可接受的状态代码。
-
¿您找到解决方案了吗?我也“卡”在相同的代码上。
-
@Andreybeta 我最终删除了 Alamofire 并使用了比 Alamofire 更灵活的 URLSession
标签: ios swift alamofire combine