Я пытаюсь извлечь некоторые данные о погоде из ответа JSON. API - это что-то вроде PITA, и его структура, по сути, такова:
"forecast":{
"2019-09-07":{
"date_epoch":1567814400,
"hourly":[
{
"time":"0",
"temperature":18,
"humidity":68
},
{
"time":"1",
"temperature":18,
"humidity":68
},
...
]
}
В результате я получаю такой массив словарей:
struct Forecast: Codable {
let forecastDate: Double? //This is a UTC time code
let hourly: [Hourly]?
}
Почасовой структура, определенная как:
struct Hourly: Codable {
let time: String? //This is the number of hourly periods past the forecastDate above starting at "0"
let temperature: Double?
let humidity: Int?
}
Я пытаюсь сопоставить ее с массивом структур, определенных следующим образом:
struct ForecastPeriod {
let startTime: Date?
let temperature: Measurement<UnitTemperature>?
let humidity: Int?
}
Проблема в том, что я не могу понять как сопоставить Forecast с ForecastPeriod, поскольку мне нужно сопоставить Forecast.forecastDate с каждым Hourly и выгрузить все в [ForecastPeriod], потому что мне нужна дата из Forecast плюс количество часов в Hourly, умноженное на время. По сути, моя формула предназначена для каждой из часовых структур, которые мне нужно создать:
ForecastPeriod.startTime = Forecast.forecastDate + timeInterval(Double(Hourly.time) * 86400.0)
Я просто не могу понять, как сопоставить эту часть. Остальное просто и можно сделать
Hourly.map { ForecastPeriod(startTime: Date(timeIntervalSince1970: THIS IS THE ISSUE), temperature: Measurement(value: $0.temp, unit: UnitTemperature.fahrenheit), humidity: $0.humidity) }