2017-06-22 21 views
1

我连接服务器始终返回其数据对象的“数据”键后面,像这样(巨大的简化):如何获取AlamofireObjectMapper中keyPath后面的对象数组?

{ 
    "data" : [ { "id" : 1, 
       "name" : "howdy" 
       }, 
       { "id" : 2, 
       "name" : "dowdy" 
       } 
      ] 
} 

现在,我想用Alamofire的ObjectMapper 4映射对象(与ID,名称)到其适当的Mappable对象。 但是,我找不到任何示例代码或解释如何获取数据keyPath后面的数组。 Lot是json根级的数组示例。

我是否必须用'数据'映射创建一个单独的可映射对象并从那里链接数组映射?

我是否必须使用自己的ResponseObject和填充的keyPath为DataRequest创建扩展?

基本上:我如何将ResponseObject的keyPath从默认的nil设置为什么?喜欢的东西:

 .responseArray { response(keyPath:"data"): DataResponse<NameModel> in 

这似乎它令我感到困惑,我无法找到任何样品这样一个简单的和共同的问题: -/

+0

[KeyPath]部分[文档中](https://github.com/tristanhimmelman/AlamofireObjectMapper#keypath)是否完全这样做? – paulvs

+0

是的,确实如此。我更新了一个答案。 – axello

回答

1

答案是,在事后,非常容易。这么容易,以至于从来没有人打算做一个例子,所以在这里:

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 
      } 

我希望这可以帮助其他人谁一直在寻找的文件,并认为:怎么了?

+0

它帮助了我,谢谢 – mkul

相关问题