在 swift 中解析 Json 中的 Optional 值时意外发现 nil

Unexpectedly found nil while unwrapping an Optional value in Json parsing in swift

代码:

var json:NSString;
json = NSString(format:"{\"und\":[{\"value\":\"2324\"}]")
var data:NSData = json.dataUsingEncoding(NSUTF8StringEncoding)!
var dataDic:NSDictionary = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments, error:nil) as! NSDictionary

我形成了自己的 json,当我尝试解析它时给出错误 "Unexpectedly found nil while unwrapping an Optional value"。我认为问题的原因是 json 对于 pasing.I不知道怎么解决这个问题?先谢谢了

正如 Martin R 所建议的那样问题出在您的 json 字符串中。所以只需像这样修改它:

"{\"und\":[{\"value\":\"2324\"}]}"

你最后忘了加}

没有 } 它不能被转换为 NSDictionary 这就是为什么它在 运行 时变成 nil

let jsonString = "{\"und\":[{\"value\":\"2324\"}]}"
if let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
    var error: NSError?
    if let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers, error: &error) as? [String:AnyObject] {
        if let dictionaries = jsonDict["und"] as? [AnyObject] {
            for dictionary in dictionaries {
                if let value = dictionary["value"] as? String {
                    println(value)
                }
            }
        }
    }
}

你不能像你那样声明一个未初始化的变量。替换

var json:NSString

var json:NSString!

感叹号声明会在使用它的地方自动展开可选值(所以你不需要写json!)但是你需要确保它以某种方式初始化。