如何处理 swift 3 中的错误?
Posted
技术标签:
【中文标题】如何处理 swift 3 中的错误?【英文标题】:How to work with errors in swift 3? 【发布时间】:2016-11-16 18:36:58 【问题描述】:我正在使用以下代码:
let jsonData1 = (try? Data(contentsOf: URL(string: "\(label2)")!)) as Data!
var error : NSError?
let ReadableJSON1 = JSON ( data:jsonData1!, options: JSONSerialization.ReadingOptions.mutableContainers, error: nil )
if (error != nil)
let myAlert = UIAlertController(title: "Alert", message: error?.localizedDescription, preferredStyle: .alert) //you can change message to whatever you want.
let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
myAlert.addAction(okAction)
self.present(myAlert, animated: true, completion: nil)
return
如果应用程序在打开链接中的 json 文件时发现错误,它应该向用户显示警报。目前它正在崩溃,似乎这些操作没有执行,这就是我没有看到警报的原因。请你帮我解决这个问题。
【问题讨论】:
有什么理由不使用try
catch
?机制?
从 Swift 2.2 开始,(NS)Error 由 try/catch 管理:developer.apple.com/library/content/documentation/Swift/…
崩溃时堆栈跟踪是什么样的?
当我在手机上模拟它时它只是停止工作
【参考方案1】:
试试这个代码:
var json : [String: AnyObject]? // Property
do
let jsonData1 = (try? Data(contentsOf: URL(string: "\(label2)")!)) as Data!
json = try JSONSerialization.jsonObject(with: jsonData1, options: JSONSerialization.ReadingOptions.mutableContainers) as! [String: AnyObject]
catch let error as NSError
let myAlert = UIAlertController(title: "Alert", message: error?.localizedDescription, preferredStyle: .alert) //you can change message to whatever you want.
let okAction = UIAlertAction(title: "Ok", style: .default, handler: nil)
myAlert.addAction(okAction)
self.present(myAlert, animated: true, completion: nil)
return
希望它会有所帮助!快乐编码!
【讨论】:
我应该在哪里使用该代码,因为我看不到这里的 json 链接是如何读取的 好吧,您需要读取 do 块内的响应数据。我已经编辑了答案。请检查 let jsonData1 = (try?Data(contentsOf: URL(string: "(label2)")!)) as Data!.. 如果这行代码返回 Data?在此处添加一些日志并检查问题所在。 您正在使用一些库来解析 JSON 数据。我使用了 Apple 提供的 JSONSerialization 类。这就是为什么有很多错误。您能告诉我您在项目中使用的 JSON 库的名称吗? SwiftyJson 是你需要的吗?以上是关于如何处理 swift 3 中的错误?的主要内容,如果未能解决你的问题,请参考以下文章