class WeatherData {
private let urlSession = URLSession.shared
private let urlPathBase = "https://api.worldweatheronline.com/premium/v1/weather.ashx?key=efcc8b6300354517b08194421202604&format=json&q="
private var dataTask:URLSessionDataTask? = nil
var delegate:WeatherDataProtocol? = nil
init(){}
func getData(exampleDataNumber: String){
var urlPath = self.urlPathBase
urlPath = urlPath + exampleDataNumber
let url:NSURL? = NSURL(string: urlPath)
print(url!)
let dataTask = self.urlSession.dataTask(with: url! as URL) {(data, response, error) -> Void in
if error != nil {
print(error!)
} else {
do {
let jsonResult = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary
if jsonResult != nil {
print(jsonResult)
let temperature_c = jsonResult?.value(forKeyPath: "data.current_condition.temp_C") as Any
if temperature_c != nil {
self.delegate?.responseDataHandler(data: jsonResult!)
} else {
self.delegate?.responseError(message: "Fake data not found")
}
} else {
print("Fake data")
}
} catch {
print("Error")
}
}
}
}
}
У меня есть вышеуказанный код для доступа к worldweatheronline API. В контроллере представления я беру значение, которое пользователь вводит в поле города и штата, и передаю его в getData как exampleDataNumber с запятой между ними и пробелами, удаленными с помощью + (например, Остин, Техас или Сан + Франциско, Калифорния). Это основано на коде, который мой профессор дал нам для отдельного примера, который работал, но по какой-то причине с этим кодом все, что он сделает, это напечатает URL, но все другие операторы печати, которые я вставил, чтобы попытаться увидеть данные, которые проходят через все, не печатают ничего, что действительно смущает меня, потому что кажется, что что-то должно печатать. Я знаю, что API отвечает HTTP вместо HTTPS, но я добавил в настройках безопасности транспорта приложения мой Info.plist, чтобы разрешить insecureHTTPLoads (пробовал worldweatheronline. net и worldweatheronline.com). Есть ли что-то еще, что мне не хватает?