NSJSONSerialization没有返回错误

时间:2014-07-13 18:28:31

标签: ios json swift exc-bad-instruction

有代码:

var err: NSError
var jsonDict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as Array<NSDictionary>

如果数据有JSON,那么它的工作原理很完美。但是,如果有其他东西(不是JSON数组)它只是有致命的错误和iOS模拟器关闭与EXC_BAD_INSTRUCTION。 所以没有电话err。我之前如何检查data?或者发现错误。

2 个答案:

答案 0 :(得分:1)

(对不起,我很匆忙,还没有描述。)

    var err: NSError?
    var jsonDict: AnyObject!
    var data: AnyObject = "{ }".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)
    if let d = data as? NSData {
        jsonDict = NSJSONSerialization.JSONObjectWithData(d, options: NSJSONReadingOptions.MutableContainers, error: &err)
        if let dict = jsonDict as? NSDictionary {
            // Do something with `dict`
            println(dict)
        }
    }

答案 1 :(得分:0)

这可能是因为JSONObjectWithData被声明为返回id,但实际上它返回NSDictionary *,NSArray *或nil - 在Swift中,将nil分配给id类型的变量崩溃设计。你需要给jsonDict一个类型,可能是一个可选的NSMutableDictionary *或NSMutableArray *。