如何在AlamofireObjectMapper中获取keyPath后面的对象数组?

时间:2017-06-22 12:10:40

标签: swift alamofire objectmapper

我连接的服务器总是返回'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

这似乎是一个简单而常见的问题,令我感到困惑的是我找不到任何样品: - /

1 个答案:

答案 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
            }

我希望这可以帮助那些一直关注文档并思考的人:怎么做?