我服务器的响应是JSON,但标头中还包含一些键
Alamofire.request(URL).responseObject { (response: DataResponse<MyMappable>) in
let weatherResponse = response.result.value
print(weatherResponse?.location)
}
我的具有地图能力的班级就是这样
class MyMappable: Mappable {
var location: String?
required init?(map: Map){
}
func mapping(map: Map) {
location <- map["location"]
}
}
以上所有代码均正常工作,但我的问题是我想映射一些值作为标头,我只能在响应中获取这些标头
let allHeaders = response.response?.allHeaderFields
if let headers = allHeaders as? [String: String], let someValue = headers["key"]
{
print("my value is: \(someValue)")
}
但是我想将其映射到 MyMappable 类中,可以吗?
答案 0 :(得分:0)
我找不到一种方法来映射带有有效负载的标头字段
我可以找到的是,我们可以从响应中获取所有标头字段,并以两种方式将其存储在我们的类中。
第一个是这样的
Alamofire.request(URL).responseObject { (response: DataResponse<MyMappable>) in
let myMappable = response.result.value
myMappable.allHeaderFields = response.response?.allHeaderFields
print(myMappable?.location)
}
和第二种方法(我使用的第二种方法)(如果您使用泛型类作为父类),则可以像打击一样投射响应
Alamofire.request(URL).responseObject { (response: DataResponse<MyMappable>) in
let myMappable = response.result.value
if let genericResp = myMappable as? GenericResponse<AnyGeneric> {
genericResp.mHeaders = response.response?.allHeaderFields
}
}