я знаю, что это не "реальное" решение, но только для ЭТОГО случая - один раз прочитайте ... это сработает: (и теперь вы знаете хотя бы как назвать дело ...)
struct WelcomeElement: Codable {
let province: Province
let county: String
let timeline: Timeline
}
enum Province: String, Codable {
case florida = "florida"
}
// MARK: - Timeline
struct Timeline: Codable {
let cases, deaths: Cases
}
// MARK: - Cases
struct Cases: Codable {
let the42120: Int
enum CodingKeys: String, CodingKey {
case the42120 = "4/21/20"
}
}
typealias Welcome = [WelcomeElement]
struct ContentView: View {
let dataArray : Welcome = []
init() {
let url = URL(string: "https://corona.lmao.ninja/v2/historical/usacounties/florida?lastdays=1")
let request = URLRequest(url: url!)
URLSession.shared.dataTask(with: request) { data, response, error in
if let decodedResponse = try? JSONDecoder().decode(Welcome.self, from: data!) {
print(decodedResponse)
}
}.resume()
}
var body: some View {
Text("Hello, World!")
}
}
более общий подход, если вы измените последние дни на большее количество дней, вы можете использовать:
// MARK: - WelcomeElement
struct WelcomeElement: Codable {
let province: Province
let county: String
let timeline: Timeline
}
enum Province: String, Codable {
case florida = "florida"
}
// MARK: - Timeline
struct Timeline: Codable {
let cases, deaths: [String: Int]
}
typealias Welcome = [WelcomeElement]
, но это работает только для Флориды ... для "общего" подхода, я думаю, вы нужно сделать это вручную ... так что разбирайте свой ответ с сервера.
, если честно, данные, которые предоставляет сервер, не очень полезны. если бы они указали такую дату:
{ "date" : "18/07/18",
"death" : 2
}
, тогда ее было бы легко прочитать .... поэтому, если вы не хотите читать ее вручную, возможно, вам следует искать лучший сервер с лучшим обслуживание ...