检查 JSON 在 swift 中的响应为零
Check JSON Response nil in swift
我正在使用 swiftyjson 进行 JSON 解析。
我的问题是当 url 无效或 url 是 returns 任何错误然后应用程序崩溃
这是代码
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()
})
如何检查 url 是否有效或 url 是否包含错误
你应该像这样使用 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()
})
我正在使用 swiftyjson 进行 JSON 解析。
我的问题是当 url 无效或 url 是 returns 任何错误然后应用程序崩溃
这是代码
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()
})
如何检查 url 是否有效或 url 是否包含错误
你应该像这样使用 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()
})