Ios Alamofire和AlamoFireObject映射器创建通用函数
我正在尝试使用最新(4.0)版本的Alamofire和AlamoFileObject Mapper为请求创建通用方法。我从下面的代码开始:Ios Alamofire和AlamoFireObject映射器创建通用函数,ios,swift,generics,swift3,alamofire,Ios,Swift,Generics,Swift3,Alamofire,我正在尝试使用最新(4.0)版本的Alamofire和AlamoFileObject Mapper为请求创建通用方法。我从下面的代码开始: func execute<T>(request : Request, completionHandler: @escaping (DataResponse<T>) -> Void){ let url: URLConvertible = baseURL + request.path Alamofire.req
func execute<T>(request : Request, completionHandler: @escaping (DataResponse<T>) -> Void){
let url: URLConvertible = baseURL + request.path
Alamofire.request(url, method: request.method, parameters: request.parameters()).responseObject(completionHandler: { (response: DataResponse<T>) in
completionHandler(response)
})
}
func执行(请求:请求,completionHandler:@escaping(DataResponse)->Void){
让url:URLConvertible=baseURL+request.path
请求(url,方法:request.method,参数:request.parameters()).responseObject(completionHandler:{(响应:DataResponse))中的
completionHandler(响应)
})
}
但我得到了一个错误:
无法将“DataResponse->Void”类型的值转换为预期值
参数类型“DataResponse->Void”
这有什么问题吗?我想这样使用它:
func login(loginRequest: LoginRequest, completionHandler: @escaping (DataResponse<LoginResponse>) -> Void) {
self.execute(request: loginRequest, completionHandler: { response in
completionHandler(response)
})
}
func登录(loginRequest:loginRequest,completionHandler:@escaping(DataResponse)->Void){
execute(请求:loginRequest,completionHandler:{响应在
completionHandler(响应)
})
}
感谢您的帮助Alamofire 4的语法已经迁移到Swift 3
Alamofire.request(url,
method: .get,
parameters: parameter,
encoding: URLEncoding.default,
headers: nil)
.response(completionHandler: { (defaultDataResponse) in
// do something with the response
print(defaultDataResponse)
})
我用Swift 3语法将语法更改为Alamofire 4。这没有问题。