从这里抛出的Swift错误不会被处理

时间:2015-06-13 09:30:41

标签: json swift error-handling xcode7

我已经让我的代码在Xcode 6中工作但是因为我得到了Xcode 7,我无法弄清楚如何解决这个问题。 let jsonresult行有一个错误,表示从此处抛出的错误未被处理。代码如下:

func connectionDidFinishLoading(connection: NSURLConnection!) {

    let jsonresult:NSDictionary = try NSJSONSerialization.JSONObjectWithData(self.bytes, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary

    print(jsonresult)

    let number:Int = jsonresult["count"] as! Int

    print(number)

    numberElements = number

    let results: NSDictionary = jsonresult["results"] as! NSDictionary

    let collection1: NSArray = results["collection1"] as! NSArray

由于

1 个答案:

答案 0 :(得分:19)

如果你看一下swift 2中JSONObjectWithData方法的定义,就会抛出错误。

class func JSONObjectWithData(data: NSData, options opt: NSJSONReadingOptions) throws -> AnyObject

在swift 2中,如果某个函数抛出错误,你必须使用do-try-catch块来处理它

以下是它的工作原理

func connectionDidFinishLoading(connection: NSURLConnection!) {
    do {
        let jsonresult:NSDictionary = try NSJSONSerialization.JSONObjectWithData(self.bytes, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
        print(jsonresult)

        let number:Int = jsonresult["count"] as! Int

        print(number)

        numberElements = number

        let results: NSDictionary = jsonresult["results"] as! NSDictionary

        let collection1: NSArray = results["collection1"] as! NSArray
    } catch {
        // handle error
    }
}

或者如果您不想要处理错误,可以使用try!关键字强制它。

let jsonresult:NSDictionary = try! NSJSONSerialization.JSONObjectWithData(self.bytes, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
        print(jsonresult)

与结束的其他关键字一样!这是一个危险的操作。如果出现错误,程序将崩溃。