Я создаю приложение, которое извлекает информацию о погоде из API OpenWeather, используя JSON.Я вложил «IF» заявления, которые я использую, чтобы построить строку текущей погоды.Цель состоит в том, чтобы создать строку «Текущая погода (описание) с температурой (темп) и скоростью ветра (ветер)».К сожалению, оператор if для извлечения значения «temp» из словаря «main» не соответствует оператору else, который просто приводит к «Текущая погода (описание)».Может кто-нибудь сказать мне, если мой код делает что-то, что приведет к тому, что я не смогу присвоить значение "temp" из словаря "main" для
Вот мой код:
let jsonResult = try JSONSerialization.jsonObject(with: urlContent, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
print(jsonResult)
if let description = ((jsonResult["weather"] as? NSArray)?[0] as? NSDictionary)?["description"] as? String {
print(description)
var weatherString = "Current weather is \(description)"
if let temp = ((jsonResult["main"] as? NSArray)?[0] as? NSDictionary)?["temp"] as? String {
weatherString += " with a temperature of \(temp)°"
if let wind = ((jsonResult["wind"] as? NSArray)?[0] as? NSDictionary)?["speed"] as? String {
weatherString += " and a wind speed of \(wind)mph."
} else {
weatherString += "."
}
} else {
weatherString += "."
}
DispatchQueue.main.sync(execute: {
self.weatherResult.text = weatherString
})
}
Вот результаты, которые я получаю от OpenWeather API:
{
base = stations;
clouds = {
all = 75;
};
cod = 200;
coord = {
lat = "37.78";
lon = "-122.42";
};
dt = 1548179880;
id = 5391959;
main = {
humidity = 60;
pressure = 1030;
temp = "51.37";
"temp_max" = "55.04";
"temp_min" = "46.04";
};
name = "San Francisco";
sys = {
country = US;
id = 5817;
message = "0.0042";
sunrise = 1548170423;
sunset = 1548206575;
type = 1;
};
visibility = 16093;
weather = (
{
description = "broken clouds";
icon = 04d;
id = 803;
main = Clouds;
}
);
wind = {
deg = 10;
speed = "6.93";
};
}