IOS:Call可以抛出,但没有标记'try'并且没有处理错误

时间:2017-07-11 02:08:11

标签: swift

在谷歌搜索这个主题并阅读其他人对其他主题的回答并将他们的建议付诸实践后,我仍然无法弄清楚这一点。

在我的代码中:

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'且未处理错误

1 个答案:

答案 0 :(得分:4)

您想要做的是以下内容。

var json: [AnyHashable:Any]?

do {
    json = try JSON(data: data)
} catch _ {
    json = nil
}

xcode试图说的是调用JSON(data: data)会抛出错误而你应该把它放在try-catch