在Swift 5中使用未解析的标识符“ self”

时间:2019-06-26 19:36:53

标签: swift

我想使用OpenWeatherMap Api编写天气应用程序。一切对我来说都很好。该应用是使用网络上的教程编写的,一切看起来都是1:1。

let weatherURL = URL(string: "http://api.openweathermap.org/data/2.5/weather?q=Warsaw,pl?&units=imperial&APPID=cb9325925ed023b38a64c3d8da3c345c")!
let dataTask = session.dataTask(with: weatherURL) {
    (data: Data?, response: URLResponse?, error: Error?) in
    if let error = error {
        print("Error:\n\(error)")
    } else {
        if let data = data {
            let dataString = String(data: data, encoding: String.Encoding.utf8)
            print("All the weather data:\n\(dataString!)")
            if let jsonObj = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? NSDictionary {
                if let mainDictionary = jsonObj.value(forKey: "main") as? NSDictionary {
                    if let temperature = mainDictionary.value(forKey: "temp") {
                        DispatchQueue.main.async {
                            self.weatherLabel.text = "Temperatura w Warszawie: \(temperature)°C"
                        }
                    }
                } else {
                    print("Error: unable to find temperature in dictionary")
                }
            } else {
                print("Error: unable to convert json data")
            }
        } else {
            print("Error: did not receive data")
        }
    }
}```

1 个答案:

答案 0 :(得分:0)

问题在于您的代码

let weatherURL = ...
let dataTask = ...

...需要在某些结构或类的方法中。如果您查看原始教程,就会发现是这种情况。您的代码只是在不允许执行代码的地方公开地闲逛。