Swift:Do,Try,Catch块,如果可选语句产生一个结束空值为

时间:2015-08-05 16:41:01

标签: ios swift swift2

即使我在该块中有一个do-try-catch块和一个if-optional,nil值仍然会结束我的线程。这是我的代码:

do {
        if let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers ) as? NSDictionary //error is on this line
            // use jsonData
        {
            return jsonData
        } else {
            if let _ = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers) as? NSDictionary {
                print("5")
            }
        }
    } catch {
        print("3")
        // report error
    }

此方法返回NSDictionary?,也是可选的。

1 个答案:

答案 0 :(得分:4)

您还应该检查数据中的nil而不是强制解包它,例如:

do {
    if let data = data {
        if let jsonData = try NSJSONSerialization.JSONObjectWithData(data, ...