【问题标题】:Swift JSON for-in loopSwift JSON for-in 循环
【发布时间】:2015-05-05 10:37:56
【问题描述】:

我正在尝试循环遍历 JSON 对象中的一系列项目。但是我遇到了一些问题。我的代码编译得很好,没有错误,但是当它到达 JSON 函数触发停止模拟并给出错误的地步时。

这是我的代码:

func getJSON() {
        let urlAsString = "http://localhost:8888/domainchecker/check.php?domain=/google.com"
        let url = NSURL(string: urlAsString)!
        let urlSession = NSURLSession.sharedSession()

        let jsonQuery = urlSession.dataTaskWithURL(url, completionHandler: { data, response, error -> Void in
            if (error != nil) {
                println(error.localizedDescription)
            }
            var err: NSError?

            var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
            if (err != nil) {
                println("JSON Error \(err!.localizedDescription)")
            }

            let arrayFromJson: String! = jsonResult["ITEMS"] as NSString

            dispatch_async(dispatch_get_main_queue(), {
                for variable in arrayFromJson {
                    println("DOMAIN");
                }

            })
        })
        jsonQuery.resume()
    }

这是 JSON 结果:

{ "ITEMS": [ { "DOMAIN": "google.nl", "AVAILABLE": "NO", "PRICE": "-" }{ "DOMAIN": "google.com", "AVAILABLE": "NO", "PRICE": "-" }{ "DOMAIN": "google.eu", "AVAILABLE": "NO", "PRICE": "-" } ] }

这是我们收到的错误:

fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)

我一直在网上搜索解决方案或替代方案,但无济于事。

提前致谢。

【问题讨论】:

    标签: xcode loops swift for-loop for-in-loop


    【解决方案1】:

    从您的 JSON 结构中,jsonResult["ITEMS"] 不是您声明的字符串,而是一个字典数组,因此您必须将其视为字典数组

    let arrayFromJson: [[String:AnyObject]] = jsonResult["ITEMS"] as [[String:AnyObject]] 
    

    【讨论】:

    • 这是使它崩溃的行:“var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary "
    • 那么服务器响应不是有效的 JSON,或者您收到错误消息。可以在浏览器中查看吗?
    • zellb,您显示的 JSON 结果似乎无效(字典之间缺少逗号)
    猜你喜欢
    • 2014-07-29
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2017-02-12
    • 2018-11-14
    相关资源
    最近更新 更多