У меня есть объект модели данных, который я должен заполнить несколькими сетевыми запросами.
Моя модель выглядит следующим образом
struct CO2Data: Identifiable, Codable {
let id = UUID()
let totalCO2: Double
let dailyAverage: Int
let calendar = Calendar.current
let dateString: String
let emissionStats: EmissionStats
let driveLog: String
// It is an ID to get the trip details
let trip : Trip
// This is what needs to be filled from the next URL request using driveLog
enum CodingKeys: String, CodingKey {
case id
case totalCO2 = "totCO2"
case dateString = "stDt"
case dailyAverage = "avg"
case emissionStats = "emisStats"
case drLogRefId = "drLogRefId"
//Not having case trip here breaks the conformance to codable
// and results in error
}
}
struct Trip: Codable {
let startTime: String
let endTime: String
let startLat: String
let startLong: String
let endLat: String
let endLong: String
}
Это поток сетевых запросов и ответов
запрос на получение CO2Data и декодировать его с помощью JSONDecoder ()
использовать свойство driveLog в извлеченных данных CO2D, чтобы сделать еще один сетевой запрос для получения объекта Trip.
Результат второго сетевого запроса должен быть добавлен к объекту CO2Data в свойстве trip.
Как мне go узнать об этом. Можно ли даже сохранить данные Trip в CO2?
Я использую Combine & URLSession.shared.dataTaskPublisher (for: URLRequest) для этого, но я могу полностью использовать простую старую задачу с простыми данными. Существуют ли известные способы обработки зависимостей запросов, подобных этой? Я не использую сторонние библиотеки и wi sh, чтобы придерживаться URLSession.
JSON Объекты выглядят так
// for CO2Data
[
{
"stDt": "2019-11-17T16:00:00.000+0000",
"totCO2": 50,
"avg": 0,
"emisStats": {
"wea": 10,
"aggDr": 10,
"tfc": 10,
"tirePress": 0,
"ac": 10,
"seatHeater": 10
},
"drLogRefId": "5dc20204199f752c7726a8f0"
}
]
//for Trip
[
{
"id": "5dc20204199f752c7726a8f0",
"startTime": "...",
"startLat: "...",
"startLong: "...",
"endLat: "...",
"endLong": "...",
}
]