在 AlamofireObjectMapper 响应中映射 allHeaderFields
Posted
技术标签:
【中文标题】在 AlamofireObjectMapper 响应中映射 allHeaderFields【英文标题】:Mapping allHeaderFields in AlamofireObjectMapper response 【发布时间】:2019-04-16 15:47:23 【问题描述】:我正在使用AlamofireObjectMapper
来自我的服务器的响应是 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 类中,可以吗?
【问题讨论】:
【参考方案1】:我找不到将标头字段与有效负载映射的方法 我能找到的是,我们可以从响应中获取所有标头字段,并以两种方式将其存储在我们的类中。 第一个是这样的
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
【讨论】:
以上是关于在 AlamofireObjectMapper 响应中映射 allHeaderFields的主要内容,如果未能解决你的问题,请参考以下文章
AlamofireObjectMapper,嵌套的 JSON 结构在序列化时总是 nil
更新到 swift 3 时 AlamofireObjectMapper 不支持 ios8?
如何实例化映射类? (迅速 - alamofireObjectMapper)