Swift 将Alamofire与.publishDecodable一起使用

Swift 将Alamofire与.publishDecodable一起使用,swift,alamofire,combine,Swift,Alamofire,Combine,我需要使用.publishDecodable和Result,我遵循了,但我遇到了这个错误:“无法推断通用参数't'的闭包” @Published var loginModel:[loginModel]=[loginModel]() var取消:任何可取消的? func请求(uURL:String,方法:HTTPMethod=.get,头:HTTPHeaders?=nil,参数:Codable?=nil)->AnyPublisher{ 让publisher=AF.request(url,方法:方

我需要使用.publishDecodable和Result,我遵循了,但我遇到了这个错误:“无法推断通用参数't'的闭包”

@Published var loginModel:[loginModel]=[loginModel]()
var取消:任何可取消的?
func请求(uURL:String,方法:HTTPMethod=.get,头:HTTPHeaders?=nil,参数:Codable?=nil)->AnyPublisher{
让publisher=AF.request(url,方法:方法,标题:标题)
.validate()
.publishDecodable(类型:T.self)
返回publisher.result()
}
func登录(电子邮件:String,密码:String){
让参数=登录参数(
电邮:电邮,,
密码:密码
)
取消=请求(服务器URL+“登录”,方法:。发布,参数:参数)
.sink{[self]中的响应
开关响应{
成功案例:
loginModel=response.value()
案例.失败(错误):
打印(错误)
}
}
}

您应该帮助编译器推断
T
类型,以提供您期望的
响应类型。例如,您对
请求(uquo:method:headers:parameters:)
函数的调用可能如下所示:

cancellation = request(serverURL + "login", method: .post, parameters: parameters)
    .sink { [self] (response: Result<[LoginModel], AFError>) in
        switch response {
        case .success(let value):
            self.loginModel = value
        case .failure(let error):
            print(error)
        }
    }
let publisher: AnyPublisher<Result<[LoginModel], AFError>, Never>
publisher = request(serverURL + "login", method: .post, parameters: parameters)
cancellation = publisher.sink { [self] response in
    switch response {
    case .success(let value):
        self.loginModel = value
    case .failure(let error):
        print(error)
    }
}
let publisher: AnyPublisher<Result<[LoginModel], AFError>, Never>
publisher = request(serverURL + "login", method: .post, parameters: parameters)
cancellation = publisher.sink { [self] response in
    switch response {
    case .success(let value):
        self.loginModel = value
    case .failure(let error):
        print(error)
    }
}