Yic*_*man 3 nsurlsession swift ios9 swift2
我正在尝试熟悉do catchswift 2和iOS 9 的新语句
我的问题是,当NSURLSession发生错误时,data参数返回nil,并返回错误.在iOS 8中,这是预期的功能,我们只是使用if语句来确定Data是否为零
然而do catch,有一个新的try关键字,我认为这是为了看看是否有效,如果没有那么默认为任何代码写入catch
但是,由于数据为零,我遇到意外崩溃.这是预期的功能,catch当我的try方法失败时,为什么不被调用?
我正在使用NSURLSession从API中提取数据.
我创建一个dataTaskWith请求,如下所示:
let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
print(request)
print(response)
print(error)
do {
let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary
Run Code Online (Sandbox Code Playgroud)
因为数据崩溃了!是零...因为有一个NSURLSession错误
print(jsonResult)
} catch {
print(error)
}
})
task.resume()
Run Code Online (Sandbox Code Playgroud)
这是因为catch只捕获函数"抛出"的内容.
NSJSONSerialization 抛出,但强行打开一个空的可选不会,它总是崩溃.
使用if let或新guard功能安全地打开您的值.
do {
if let myData = data, let jsonResult = try NSJSONSerialization.JSONObjectWithData(myData, options: []) as? NSDictionary {
print(jsonResult)
}
} catch {
print(error)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |