在swift中检查JSON Response nil

时间:2016-03-14 07:25:25

标签: ios json swift swifty-json

我正在使用swiftyjson进行JSON解析。

我的问题是当url无效或url返回任何错误然后应用程序崩溃

这是代码

      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { () -> Void in

        let url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=25&playlistId=\(self.playId)&key=AIzaSyB6LBckj5oqkbmroNPIhm7zru9vmsZR-w0"

        self.json = JSON(data: (NSData(contentsOfURL: (NSURL(string: url)!)))!, options: NSJSONReadingOptions.MutableContainers, error: nil) // App is crash on this line


 // END
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.tableView.reloadData()
        })

如何检查网址有效或网址包含错误

1 个答案:

答案 0 :(得分:1)

你应该使用类似这样的try-catch来防止崩溃:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { () -> Void in

        let url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=25&playlistId=\(self.playId)&key=AIzaSyB6LBckj5oqkbmroNPIhm7zru9vmsZR-w0"

    if let JSONObject = try NSJSONSerialization.JSONObjectWithData((NSData(contentsOfURL: (NSURL(string: url)!)))?, options: .AllowFragments) as? [[String: AnyObject]],

    }    


 // END
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            self.tableView.reloadData()
        })