致命错误:在展开Optional值时意外发现nil

时间:2015-01-25 21:25:53

标签: ios swift crash optional-values

我在运行代码时遇到此错误:fatal error: unexpectedly found nil while unwrapping an Optional value,可能导致此问题?

var bodyData = "tel_client=\(phoneNumber)&id_pays=\(phoneCode)&datetime_alibi=\(getDateTimeFormat(date))&tel_contact=\(to)&nb_rappel_alibi=1&pr_rappel_alibi=5"
//println(bodyData)
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
    (response, data, error) in
    var error: NSError?
    var jsonData: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options:nil, error: &error) as NSDictionary

    if jsonData["success"] as Int == 1 {
        let alertView = UIAlertView(title: "GOOD", message: nil, delegate: self, cancelButtonTitle: "ok")
        alertView.show()
    } else {
        let alertView = UIAlertView(title: "ERROR", message: jsonData["message"] as? String, delegate: self, cancelButtonTitle: "ok")
        alertView.show()
    }
}

1 个答案:

答案 0 :(得分:1)

JSONObjectWithData返回一个可选项。这是您的错误来自的地方。展开它将消除错误。

var jsonData = NSJSONSerialization.JSONObjectWithData(data, options:nil, error: &error) as? NSDictionary

// unwrap the optional
if let json = jsonData {
    if json["success"] as Int == 1 {
        let alertView = UIAlertView(title: "GOOD", message: nil, delegate: self, cancelButtonTitle: "ok")
        alertView.show()
    } else {
        let alertView = UIAlertView(title: "ERROR", message: json["message"] as? String, delegate: self, cancelButtonTitle: "ok")
        alertView.show()
    }
} else {
    // jsonData was nil
}