#ios #swift #generics #swift3 #alamofire
#iOS #swift #универсальные #swift3 #alamofire
Вопрос:
Я пытаюсь создать универсальный метод для запросов с новейшими (4.0) версиями Alamofire и AlamofireObjectMapper. Я начал с приведенного ниже кода:
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)
})
}
Но я получаю сообщение об ошибке:
не удается преобразовать значение типа ‘DataResponse -> Void’ в ожидаемый тип аргумента ‘DataResponse -> Void’
В чем проблема с этим? Я хотел бы использовать ее следующим образом:
func login(loginRequest: LoginRequest, completionHandler: @escaping (DataResponse<LoginResponse>) -> Void) {
self.execute(request: loginRequest, completionHandler: { response in
completionHandler(response)
})
}
Спасибо за помощь
Ответ №1:
Синтаксис 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)
})
Комментарии:
1. Я меняю синтаксис на Alamofire 4 с синтаксисом Swift 3. С этим нет проблем.