Alamofire EmptyResponseCodes 不起作用
Alamofire EmptyResponseCodes doesn't work
终结点以代码 201 和空响应正文进行响应。查看 Alamofire 文档,只有 204 和 205 响应主体可以为空。有一个解决方案,我们可以指定带有空结果的状态代码。
添加了一组
emptyResponseCodes: [200, 201, 202, 203, 204, 205]
发送请求后,仍然报错!= nil
我在这里做错了什么?
responseDecodable(of: TResult.self,
decoder: self.jsonDecoder,
emptyResponseCodes: [200, 201, 202, 203, 204, 205],
completionHandler: { (response: DataResponse<TResult, AFError>) in
if let error = response.error {
taskCompletionSource.set(error: error)
} else if let result = response.value {
taskCompletionSource.set(result: result)
} else {
taskCompletionSource.set(result: EmptyCodable())
}
Alamofire 包含一个 Empty
类型正是用于此目的,以及一个 EmptyResponse
协议以便类型可以定义它们自己的空值。在我们包含的响应序列化程序中,我们检查是否允许空响应,如果允许,则尝试转换相关的空类型。
例如:
struct EmptyEntity: Codable, EmptyResponse {
static func emptyValue() -> EmptyEntity {
return EmptyEntity.init()
}
}
终结点以代码 201 和空响应正文进行响应。查看 Alamofire 文档,只有 204 和 205 响应主体可以为空。有一个解决方案,我们可以指定带有空结果的状态代码。 添加了一组
emptyResponseCodes: [200, 201, 202, 203, 204, 205]
发送请求后,仍然报错!= nil 我在这里做错了什么?
responseDecodable(of: TResult.self,
decoder: self.jsonDecoder,
emptyResponseCodes: [200, 201, 202, 203, 204, 205],
completionHandler: { (response: DataResponse<TResult, AFError>) in
if let error = response.error {
taskCompletionSource.set(error: error)
} else if let result = response.value {
taskCompletionSource.set(result: result)
} else {
taskCompletionSource.set(result: EmptyCodable())
}
Alamofire 包含一个 Empty
类型正是用于此目的,以及一个 EmptyResponse
协议以便类型可以定义它们自己的空值。在我们包含的响应序列化程序中,我们检查是否允许空响应,如果允许,则尝试转换相关的空类型。
例如:
struct EmptyEntity: Codable, EmptyResponse {
static func emptyValue() -> EmptyEntity {
return EmptyEntity.init()
}
}