2017-06-22 66 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

相關問題