使用 Alamofire 获取数组键值

Posted

技术标签:

【中文标题】使用 Alamofire 获取数组键值【英文标题】:Get array key value with Alamofire 【发布时间】:2016-10-05 03:42:56 【问题描述】:

我正在发出一个简单的请求以从 JSON 文件中获取特定数据,但在获取确切数据时遇到问题。

JSON 文件:


    "Something1": 
        "Added": "09-10-2016",
        "Expires": "09-12-2016",
        "Reliability": "78%",
        "Views": "2",
        "Priority": "High"
    ,
    "Something2": 
        "Added": "09-11-2016",
        "Expires": "09-13-2016",
        "Reliability": "98%",
        "Views": "5",
        "Priority": "Low"
    

快速代码:

Alamofire.request("https://example.com/args.json").responseJSON  response in
            if let JSON = response.result.value as? [String:AnyObject] 
                print(JSON["Something1"])
            
        

使用print(JSON["Something1"]),它会按预期打印Something1 的所有内容,但是当我尝试执行print(JSON["Something1"]["Views"]) 时会抛出错误。我将如何解决这个问题?

【问题讨论】:

我认为您必须将 JSON["Something1"] 转换为 [String:AnyObject] @koropok 这绝对是为我做的!谢谢! 【参考方案1】:

恐怕您的问题与 Alamofire 无关,更多的是使用 Swift 处理 JSON。在您的情况下,当您进行第一个可选绑定时,您将转换为 [String: AnyObject],这是正确的,这意味着您可以下标 JSON["Something1"]

但在那之后,当您尝试再次通过 JSON["Something1"]["Views"] 下标时,编译器不知道 JSON["Something1"] 有什么,因此您不能将其用作字典,而是需要再次将其转换为字典,因为使用像这样的可选绑定嵌套:

if let nestedDictionary1 = JSON["Something1"] as? [String: AnyObject] 
    // access individual value in dictionary

    if let views = nestedDictionary1["Views"] as? Int 
         print(views)
    

您可以在 Apple 的 article 中阅读有关 JSON 工作的更多信息。

希望对你有所帮助。

【讨论】:

以上是关于使用 Alamofire 获取数组键值的主要内容,如果未能解决你的问题,请参考以下文章

错误:导入 Alamofire

安装库 Alamofire 可能出现错误

使用 GAIDictionaryBuilder 后,AlamoFire + Google Analytics 出现相同的 VC 错误

强制 Alamofire 在主线程上做所有事情?

Alamofire 请求大约需要 10 秒

在 Alamofire 4.0 中初始化 SessionManager