【问题标题】:How to get an object array behind a keyPath in AlamofireObjectMapper?如何在 AlamofireObjectMapper 中的 keyPath 后面获取对象数组?
【发布时间】:2017-11-25 17:08:05
【问题描述】:

我连接的服务器总是在“数据”键后面返回其数据对象,如下所示(非常简化):

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

现在,我想使用 Alamofire 的 ObjectMapper 4 将数组中的对象(带有 id、名称)映射到它们正确的 Mappable 对象。 但是,我找不到任何示例代码或解释如何获取“数据”keyPath 后面的数组。 json 根级别的数组示例很多。

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

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

基本上:如何将 ResponseObject 上的 keyPath 从默认的 nil 设置为 anything?比如:

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

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

【问题讨论】:

  • KeyPath 部分 in the documentation 不正是这样做的吗?
  • 是的,确实如此。我更新了答案。

标签: swift alamofire objectmapper


【解决方案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
            }

我希望这可以帮助那些不断查看文档并思考的其他人:如何?

【讨论】:

    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 2016-08-21
    • 2015-07-29
    • 2021-10-10
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多