我试着这样做,试着,抓住:
do {
setQA = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [AnyObject]
print(setQA)
}
catch _ {
setQA = nil
self.customAlert("Error")
}
我正试图调用一个方法来使用UIAlertController,但它永远也达不到。
这甚至无法通过尝试,我的应用程序将崩溃,并出现以下错误:
Could not cast value of type '__NSCFDictionary' (0x1a1773968) to 'NSArray'
这是一个预期的错误,有时会发生挂起的用户数据,我只是没有我的应用崩溃,只是显示警告
最佳答案
do/try/catch
将捕获某些其他方法引发的错误,但它不会捕获运行时异常,例如您从强制向下转换中获取的异常。例如,如果data
是无效的JSON,则会抛出并捕获错误。在您的例子中,JSON似乎是有效的,但它是一个字典,而不是一个数组。
你想要像这样的东西
setQA = nil
do {
if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as? [AnyObject] {
setQA = json
print(setQA)
} else {
self.customAlert("Invalid response from server")
}
} catch _ {
self.customAlert("Error parsing JSON")
}