Я учился анализировать OpenWeather API в XCode и немного запутался. Поэтому я должен сделать запрос на получение отчета о погоде от OpenWeather, а затем отобразить его на этикетках, которые я подготовил.
У меня есть основной V C с выводами этикеток
class ViewController: UIViewController {
@IBOutlet weak var weatherDescriptionlabel: UILabel!
@IBOutlet weak var cityLabel: UILabel!
@IBOutlet weak var currentWeatherLabel: UILabel!
var Data: [DataClass] = []
var cityName: String = ""
var currentWeather: Int = 0
var weatherDescription: String = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
dataLoader().loadData()
}
}
У меня есть отдельный класс для "подготовки" JSON данных для передачи
class WeatherDataClass {
let cityName: String
let currentWeather: Int
let weatherDescription: String
init (data: NSDictionary){
let cityName = data["name"] as? String
let currentWeather = data["temp"] as? String
let weatherDescription = data["description"] as? String
self.cityName = cityName!
self.currentWeather = Int(currentWeather!)!
self.weatherDescription = weatherDescription!
}
}
и DataLoader, который вызывает API
protocol dataLoaderDelegate{
func load( data: [WeatherDataClass] ) }
class dataLoader{
var delegate: dataLoaderDelegate?
var Url = URL(string: "http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=f2a7ca3bd41dfa2efab0ad667aafe1df")!
func loadData(){
let url = Url
let request = URLRequest(url: url)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data,
let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments),
let jsonDict = json as? NSDictionary{
var weather: [WeatherDataClass] = []
for (_,data) in jsonDict where data is NSDictionary{
if let x = WeatherDataClass(data: data as! NSDictionary){
weather.append(x)
}
}
self.delegate?.load(data: weather)
} }
task.resume()
}
}
Проблема в том, что данные из JSONdict не Обернуть в NSDictionary Он остается Any и дает мне ошибку
Что я делаю не так? Заранее спасибо за помощь