Alamofire和AlamofireObjectMapper创建通用函数

时间:2016-10-21 08:12:06

标签: ios swift generics 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 - &gt;类型的值无法预料到的   参数类型'DataResponse - &gt;无效“

这有什么问题?我想这样使用它:

  func login(loginRequest: LoginRequest, completionHandler: @escaping (DataResponse<LoginResponse>) -> Void) {
    self.execute(request: loginRequest, completionHandler: { response in
      completionHandler(response)
    })
  }

感谢您的帮助

1 个答案:

答案 0 :(得分: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)
        })