我正在尝试使用swiftyjson,而我遇到了一个错误:
呼叫可以投掷,但标有"尝试",错误不是 处理。
我已经验证了我的源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()
}
}
感谢您的所有帮助!
swiftyjson initializer throws
,声明为
public init(data: Data, options opt: JSONSerialization.ReadingOptions = []) throws
您有三个选择:
使用
do - catch
块并处理错误(推荐的一个(。do { let json = try JSON(data: data) print(json) } catch { print(error) // or display a dialog }
忽略错误并可选绑定结果(如果错误无关紧要(
。 。if let json = try? JSON(data: data) { print(json) }
强制解开结果
let json = try! JSON(data: data) print(json)
仅在保证尝试永远不会失败的情况下使用此选项(在这种情况下!(。如果目录是框架创建的默认目录之一,则可以在
FileManager
中使用Try!
。
有关更多信息,请阅读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
}
可能需要实现do{} catch{}
块。在do
块内部,您必须通过尝试调用可投掷功能。