我连接的服务器总是返回'data'键后面的数据对象,就像这样(非常简化):
{
"data" : [ { "id" : 1,
"name" : "howdy"
},
{ "id" : 2,
"name" : "dowdy"
}
]
}
现在,我想使用Alamofire的ObjectMapper 4将数组中的对象(带有id,name)映射到正确的Mappable对象。 但是,我找不到任何示例代码或解释如何在“data”keyPath后面获取数组。很多关于json根级别的数组的例子。
我是否必须使用'data'映射创建一个单独的可映射对象,并从那里链接数组映射?
我是否必须使用自己的ResponseObject和填充的keyPath创建DataRequest扩展?
基本上:如何将ResponseObject上的keyPath从默认的nil设置为任何?类似的东西:
.responseArray { response(keyPath:"data"): DataResponse<NameModel> in
这似乎是一个简单而常见的问题,令我感到困惑的是我找不到任何样品: - /
答案 0 :(得分:2)
事后回答非常简单。很容易,没有人费心去做一个例子,所以这里有:
keyPath的默认初始值为nil。要使用您自己的keyPath,您必须将keyPath添加到responseArray,如下所示:
.responseArray(keyPath: "data") { (response: DataResponse<[NameModel]>) in
switch response.result {
case .success(let items):
var names: [NameModel] = []
for name in items {
names.append(name)
}
completion(nil, names)
break
case .failure(let error):
self.handleError(error)
completion(ServiceError.jsonError, nil)
break
}
我希望这可以帮助那些一直关注文档并思考的人:怎么做?