11 swift swifty-json
我想使用swiftyjson,我收到一个错误:
调用可以抛出,但标记为'try',并且不处理错误.
我已经验证了我的源JSON是好的.我一直在寻找,无法找到解决这个问题的方法
import Foundation
class lenderDetails
{
func loadLender()
{
let lenders = ""
let url = URL(string: lenders)!
let session = URLSession.shared.dataTask(with: url)
{
(data, response, error) in
guard let data = data else
{
print ("data was nil?")
return
}
let json = JSON(data: data)
print(json)
}
session.resume()
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
vad*_*ian 48
SwiftyJSON初始化程序throws,声明是
public init(data: Data, options opt: JSONSerialization.ReadingOptions = []) throws
Run Code Online (Sandbox Code Playgroud)
你有三个选择:
使用do - catch块并处理错误(推荐的错误).
do {
let json = try JSON(data: data)
print(json)
} catch {
print(error)
// or display a dialog
}
Run Code Online (Sandbox Code Playgroud)忽略错误并选择绑定结果(如果错误无关紧要,则非常有用).
if let json = try? JSON(data: data) {
print(json)
}
Run Code Online (Sandbox Code Playgroud)强制打开结果
let json = try! JSON(data: data)
print(json)
Run Code Online (Sandbox Code Playgroud)
只有在保证尝试永远不会失败的情况下才使用此选项(不是在这种情况下!).Try!例如,FileManager如果目录是框架创建的默认目录之一,则可以使用它.
有关更多信息,请阅读Swift语言指南 - 错误处理
你应该把它包装成一个do-catch块。在你的情况下:
do {
let session = URLSession.shared.dataTask(with: url) {
(data, response, error) in
guard let data = data else {
print ("data was nil?")
return
}
let json = JSON(data: data)
print(json)
}
} catch let error as NSError {
// error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12112 次 |
| 最近记录: |