解析json时Swift NSURLCONNECTION致命错误

时间:2015-03-31 21:48:01

标签: xcode swift

我正在尝试使用以下代码访问api。 我收到错误"致命错误:在打开一个Optional值时意外发现nil"当我试图解析json时。

我不确定为什么会发生错误。 数据不是零。

var urlFull = NSURL(string: url)!
    var urlrequest = NSURLRequest(URL: urlFull)
    let queue:NSOperationQueue = NSOperationQueue()

    NSURLConnection.sendAsynchronousRequest(urlrequest, queue: queue, completionHandler: {
        (response, data, error) -> Void in
        println(response)
        println(data)
        println(error)

        if let anError = error {
            println(error)
        } else {
            var jsonError: NSError? = nil
            let post = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as NSDictionary
            if let aJSONError = jsonError {
                println("Error parsing")
            } else {
                println("The post is: " + post.description)
            }


        }
    })

1 个答案:

答案 0 :(得分:0)

问题在于您的强迫演员:as NSDictionary。无论返回什么,都无法投放到NSDictionary

在解析JSON时,您应始终使用可选的强制转换(as?)和可选的展开(if let…):

let post = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &jsonError) as? NSDictionary

if let post = post {
    // it worked! parse post
} else {
    // it's not a dictionary.
    println(post)
    // see what you have and debug from there
}