我现在有一个功能:

  func getJSONDataDictionary (accessToken: String, response: Mappable, url: String) {

    let headers = [
      "Cache-Control": "no-cache",
      "Authorization": "bearer \(accessToken)"
    ]

    Alamofire.request(.GET, url, encoding: .JSON, headers: headers)
      .responseObject{  (response: Response<response, NSError>) in

       let JSONDict = response.result.value

    }
  }

我想为响应参数传入一个类型为Mappable的类(该类用于标识类是否符合ObjectMapper协议)。按照现在的代码方式,我得到一个错误“response is not a type”。有什么我可以做的函数,所以它需要一个可映射的参数?

最佳答案

错误消息指出您的参数结果不是类型,它不是。可映射是一个协议。
我建议您将函数设为泛型,如下所示:

    func getJSONDataDictionary< T: Mappable>(accessToken: String, response: T, url: String) {

    let headers = [
      "Cache-Control": "no-cache",
      "Authorization": "bearer \(accessToken)"
    ]

    Alamofire.request(.GET, url, encoding: .JSON, headers: headers)
      .responseObject{  (response: Response<response, NSError>) in

       let JSONDict = response.result.value

    }
  }

泛型类型T将被约束到可映射协议。

关于ios - AlamoFire + ObjectMapper,如何让函数接受可映射类型的参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37715688/

10-14 14:03