我正在尝试使用swiftyjson,我收到错误:
通话可以抛出,但标有“尝试”#39;而错误不是 处理。
我已验证我的源JSON是好的。我一直在搜索,找不到解决这个问题的方法
return value ?? "Unknown";
感谢您的帮助!
答案 0 :(得分:47)
SwiftyJSON初始值设定项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)
只有在保证尝试永不失败的情况下才使用此选项(不是在这种情况下!)。如果目录是框架创建的默认目录之一,则可以在Try!
中使用FileManager
。
有关详细信息,请参阅Swift Language Guide - Error Handling
答案 1 :(得分:3)
您应该将其包装到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
}
答案 2 :(得分:0)
您可能需要实施do{} catch{}
阻止。在do
块内,您必须使用try。