Swift 5 Alamofire 5数据请求扩展响应收集和响应对象

Swift 5 Alamofire 5数据请求扩展响应收集和响应对象,swift,alamofire,alamofire-request,Swift,Alamofire,Alamofire Request,我有这段代码,当我更新到Alamofire 5时,我得到了DataResponseSerializer问题。有人转换了可以在Alamofire 5库中使用的responseCollection和responseObject函数吗? 我想保留函数声明格式,只想转换函数体 extension DataRequest { @discardableResult func responseCollection<T: ResponseCollectionSerializable>

我有这段代码,当我更新到Alamofire 5时,我得到了DataResponseSerializer问题。有人转换了可以在Alamofire 5库中使用的responseCollection和responseObject函数吗? 我想保留函数声明格式,只想转换函数体

extension DataRequest {

    @discardableResult
    func responseCollection<T: ResponseCollectionSerializable>(queue: DispatchQueue? = nil, completionHandler: @escaping (AFDataResponse<[T]>) -> Void) -> Self {
        let responseSerializer = DataResponseSerializer<[T]> { request, response, data, error in
            if let error = error {
                return .failure(ResponseObjectError.network(error: error))
            }

            guard let data = data else {
                return .failure(ResponseObjectError.data(reason: "Data is missing."))
            }

            let json = JSON(data: data)

            if let error = json.error {
                return .failure(ResponseObjectError.jsonSerialization(error: error))
            }

            guard let response = response else {
                return .failure(ResponseObjectError.response(reason: "Response is missing."))
            }

            switch response.statusCode {
            case 401:
                if let reason = String(data: data, encoding: .utf8), !reason.isEmpty {
                    return .failure(ResponseObjectError.client(reason: reason))
                }

                return .failure(ResponseObjectError.client(reason: "Unauthorized"))

            case 422:
                if let reason = json.first?.1.first?.1.stringValue {
                    return .failure(ResponseObjectError.client(reason: reason))
                }

                return .failure(ResponseObjectError.client(reason: "Unauthorized"))

            default:
                break
            }

            return .success(T.collection(from: response, withJSON: json))
        }

        return response(responseSerializer: responseSerializer, completionHandler: completionHandler)
    }

    @discardableResult
    func responseObject<T: ResponseObjectSerializable>(queue: DispatchQueue? = nil, completionHandler: @escaping (AFDataResponse<T>) -> Void) -> Self {
        let responseSerializer = DataResponseSerializer<T> { request, response, data, error in
            if let error = error {
                return .failure(ResponseObjectError.network(error: error))
            }

            guard let data = data else {
                return .failure(ResponseObjectError.data(reason: "Data is missing."))
            }

            let json = JSON(data: data)
   
            if let error = json.error {
                return .failure(ResponseObjectError.jsonSerialization(error: error))
            }

            guard let response = response else {
                return .failure(ResponseObjectError.response(reason: "Response is missing."))
            }

            switch response.statusCode {
            case 200...299:
                break

            case 401:
                if let reason = String(data: data, encoding: .utf8), !reason.isEmpty {
                    return .failure(ResponseObjectError.client(reason: reason))
                }

                return .failure(ResponseObjectError.client(reason: "Unauthorized"))

            case 422:
                if let reason = json.first?.1.first?.1.stringValue {
                    return .failure(ResponseObjectError.client(reason: reason))
                }

                return .failure(ResponseObjectError.client(reason: "Unauthorized"))

            default:
                if let reason = json["error"].string {
                    return .failure(ResponseObjectError.client(reason: reason))
                }

                return .failure(ResponseObjectError.client(reason: String(response.statusCode)))
            }

            guard let responseObject = T(response: response, json: json) else {
                return .failure(ResponseObjectError.objectSerialization(reason: "JSON could not be serialized: \(json)"))
            }

            return .success(responseObject)
        }

        return response(queue: queue, responseSerializer: responseSerializer, completionHandler: completionHandler)
    }

}
扩展数据请求{
@可丢弃结果
func responseCollection(队列:DispatchQueue?=nil,completionHandler:@escaping(AFDataResponse)->Void)->Self{
让responseSerializer=DataResponseSerializer{请求,响应,数据,错误
如果let error=error{
return.failure(ResponseObjectError.network(错误:error))
}
guard let data=其他数据{
return.failure(ResponseObjectError.data(原因:“数据丢失”)
}
让json=json(数据:数据)
如果let error=json.error{
return.failure(ResponseObjectError.jsonSerialization(错误:error))
}
防护装置let响应=响应else{
return.failure(ResponseObjectError.response(原因:“缺少响应”)
}
开关响应状态码{
案例401:
如果let reason=String(数据:数据,编码:.utf8),!reason.isEmpty{
return.failure(ResponseObjectError.client(原因:原因))
}
return.failure(ResponseObjectError.client(原因:“未授权”))
案例422:
如果let reason=json.first?.1.first?.1.stringValue{
return.failure(ResponseObjectError.client(原因:原因))
}
return.failure(ResponseObjectError.client(原因:“未授权”))
违约:
打破
}
return.success(T.collection(from:response,withJSON:json))
}
返回响应(responseSerializer:responseSerializer,completionHandler:completionHandler)
}
@可丢弃结果
func responseObject(队列:DispatchQueue?=nil,completionHandler:@escaping(AFDataResponse)->Void)->Self{
让responseSerializer=DataResponseSerializer{请求,响应,数据,错误
如果let error=error{
return.failure(ResponseObjectError.network(错误:error))
}
guard let data=其他数据{
return.failure(ResponseObjectError.data(原因:“数据丢失”)
}
让json=json(数据:数据)
如果let error=json.error{
return.failure(ResponseObjectError.jsonSerialization(错误:error))
}
防护装置let响应=响应else{
return.failure(ResponseObjectError.response(原因:“缺少响应”)
}
开关响应状态码{
案例200…299:
打破
案例401:
如果let reason=String(数据:数据,编码:.utf8),!reason.isEmpty{
return.failure(ResponseObjectError.client(原因:原因))
}
return.failure(ResponseObjectError.client(原因:“未授权”))
案例422:
如果let reason=json.first?.1.first?.1.stringValue{
return.failure(ResponseObjectError.client(原因:原因))
}
return.failure(ResponseObjectError.client(原因:“未授权”))
违约:
如果let reason=json[“error”].string{
return.failure(ResponseObjectError.client(原因:原因))
}
return.failure(ResponseObjectError.client(原因:字符串(response.statusCode)))
}
guard let responseObject=T(response:response,json:json)else{
return.failure(ResponseObjectError.objectSerialization(原因:“JSON无法序列化:\(JSON)”)
}
return.success(responseObject)
}
返回响应(队列:队列,响应序列化程序:响应序列化程序,completionHandler:completionHandler)
}
}
如何将其转换为可解码的东西