【问题标题】:Getting JSON array with Alamofire + SwiftyJSON使用 Alamofire + SwiftyJSON 获取 JSON 数组
【发布时间】:2015-12-03 20:08:14
【问题描述】:

我真的是 Swift 新手,抱歉,如果这是一个愚蠢的问题......似乎有很多关于这个的问题,但他们都没有使用最新版本的 Alamofire

Alamofire.request(.GET, url)
    .responseJSON { response in

    let json = JSON(response.data!)
    debugPrint(json)
    self.delegate?.didReceiveAPIResults(json)
}

还有委托的didReceiveAPIResults方法

func didReceiveAPIResults(results: JSON) {
    dispatch_async(dispatch_get_main_queue(), {
        self.tableData = results["items"].arrayObject!
        self.appsTableView!.reloadData()
    })
}

这是 JSON 响应:

{
    "items": [
        {
            "id": 1,
            "name": "Sample 1"
        },
        {
            "id": 2,
            "name": "Sample 2"
        }
    ]
}

我希望 debugPrint 打印类似于 JSON 的内容,但它只是打印 unknown

如果我自己调试打印response.data,它似乎被编码...

Optional(<7b226461 7461223a 5b7b2269 64223a36 2c226e61 6d6522......

然后我的results["items"].arrayObject! 行有这个错误:

fatal error: unexpectedly found nil while unwrapping an Optional value

【问题讨论】:

    标签: swift alamofire swifty-json


    【解决方案1】:

    与其抢response.data,我建议抢response.result.value。当您执行responseJSON 时,Alamofire 会为您解析 JSON,您应该可以随意抓取这个解析的对象。

    Alamofire.request(.GET, url)
        .responseJSON { response in
            if let value = response.result.value {
                let json = JSON(value)
                self.delegate?.didReceiveAPIResults(json)
            }
    }
    

    【讨论】:

    • 完美运行,谢谢。现在我在 Alamofire 文档中非常清楚地看到了 response.result.value,我只是以某种方式错过了这一点
    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2016-09-30
    • 2018-11-12
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多