在谷歌搜索这个主题并阅读其他人对其他主题的回答并将他们的建议付诸实践后,我仍然无法弄清楚这一点。
在我的代码中:
import Foundation
protocol WeatherServiceDelegate {
func setWeather(weather: Weather)
}
class WeatherService {
var delegate: WeatherServiceDelegate?
func getWeather(city: String) {
let path = "http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1"
let url = URL(string: path)!
let session = URLSession.shared
let task = session.dataTask(with: url) { (data: Data?, response: URLResponse?, error: Error?) -> Void in
if let data = data {
//print(">>>>\(data)")
let json = JSON(data: data)
}
}
task.resume()
}
}
我从这一行得到了错误。小红箭头在JSON的'J'下面......
let json = JSON(data: data)
错误是:
调用可以抛出,但未标记为'try'且未处理错误
答案 0 :(得分:4)
您想要做的是以下内容。
var json: [AnyHashable:Any]?
do {
json = try JSON(data: data)
} catch _ {
json = nil
}
xcode试图说的是调用JSON(data: data)
会抛出错误而你应该把它放在try-catch