Reputation: 14092
I am trying to create generic method for requests with newest (4.0) versions of Alamofire and AlamofireObjectMapper. I started with code below:
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)
})
}
But I get error:
cannot convert value of type 'DataResponse -> Void' to expected argument type 'DataResponse -> Void'
What's problem with this? I would like to use it like this:
func login(loginRequest: LoginRequest, completionHandler: @escaping (DataResponse<LoginResponse>) -> Void) {
self.execute(request: loginRequest, completionHandler: { response in
completionHandler(response)
})
}
Thanks for help
Upvotes: 1
Views: 740
Reputation: 6459
The syntax of Alamofire 4 is already migrate to 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)
})
Upvotes: 1