在 Swift 中循环遍历 Alamofire JSON 结果

Posted

技术标签:

【中文标题】在 Swift 中循环遍历 Alamofire JSON 结果【英文标题】:Loop through Alamofire JSON Results in Swift 【发布时间】:2017-03-05 03:55:33 【问题描述】:

我有一个 Web 服务,它返回以下关于移动设备的 JSON 结果:


  "devices": 
    "device": [
      
        "model": "iPhone 6",
        "OS": "ios 10"
      ,
      
        "model": "iPad Air",
        "OS": "iOS 9"
      
    ]
  

我正在尝试遍历这个 JSON 的结果,结果应该是这样的:

[iPhone 6, iPad Air]
[iOS 10, iOS 9]

到目前为止,我想出的只是:

    for (_,_):(String, JSON) in json["devices"]["device"] 

 

这将遍历“设备”数组,但我不确定如何查看字典并获取“模型”值,然后获取“操作系统”值。

更新:修改后的问题更清楚地说明了我的目标和我目前的目标。

【问题讨论】:

向我们展示如何将数据保存在数组中。 我有: var deviceArray: [AnyObject] = [] 然后添加到它会是这样的: deviceArray.append(test) 【参考方案1】:

我将您的数据建模为字典,这似乎对我有用:

let dictionary = [
    "devices": [
        "device": [
            ["model": "ip6", "OS": "iOS10"],
            ["model": "ipad air", "OS": "iOS9"],
        ]
    ]
]
if let devices = dictionary["devices"], let deviceArray = devices["device"]  
    for device in deviceArray 
        if let model = device["model"], let os = device["OS"] 
            print("\(model), \(os)")
            // Save your model and os to their respective arrays here
        
    

编辑:如果值来自 Alamofire 并假设返回有效,那么您只需将返回值存储到字典中并从上面执行相同的操作:

guard let dictionary = response.result.value as? [String: Any] else 
    print("Return result not in form [String: Any]")
    return

【讨论】:

这会将值硬编码到字典中。我需要它是动态的,因为 JSON 可以返回 3 个设备或 40 个设备。

以上是关于在 Swift 中循环遍历 Alamofire JSON 结果的主要内容,如果未能解决你的问题,请参考以下文章

Swift Alamofire 如何处理来自循环的所有请求

使用 alamofire 在 Swift 上解析 Json

Swift 4 - 如何在 UIAlert 中显示来自 JSON Alamofire 的错误响应

遍历来自 Alamofire 的 JSON 响应

Swift 3:Alamofire POST 请求参数问题

如何在 alamofire 中同步上传图片?