2016-06-09 87 views
1

我现在有一个功能:AlamoFire + ObjectMapper,如何让一个函数接受一个类型为Mappable的参数?

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 

    } 
    } 

,我想在一个类,它是类型可映射(这是用于识别如果类符合ObjectMapper协议类别)用于响应参数来传递。用代码的方式,现在我得到一个错误“响应不是一种类型”。有什么我可以做的功能,所以它需要一个Mappable参数?

回答

0

错误消息指出您的参数结果不是一种类型,它不是。 可映射协议

我建议你让你的功能一般,像这样:

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 

    } 
    } 

泛型类型牛逼将被约束至可映射协议。

0

你可以这样做:

var request = URLRequest(url: URL(string: url)!) 
    request.httpMethod = HTTPMethod.post.rawValue 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 

    let pjson = attendences.toJSONString(prettyPrint: false) 
    let data = (pjson?.data(using: .utf8))! as Data 

    request.httpBody = data 

    Alamofire.request(request).responseJSON { (response) in 


     print(response) 

    } 
相关问题