Вы можете проанализировать ваш словарь json как [String:Double]
, и они преобразуют его в массив кортежей даты и удваивают:
let json = """
{
"20170101": 0.17,
"20170102": 1.0,
"20170103": 0.68,
"20170104": 0.61,
"20170105": 1.03,
"20170106": 0.48,
"20170107": 0.52,
"20170108": 0.51,
"20170109": 0.28
}
"""
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
do {
let array: [(date: Date, double: Double)] = try JSONDecoder().decode([String:Double].self, from: Data(json.utf8))
.compactMap({ (key,value) -> (Date, Double)? in
guard let date = dateFormatter.date(from: key) else { return nil }
return (date, value)
}).sorted(by: { $0.date < $1.date })
for (date, double) in array {
print("Date:", dateFormatter.string(for: date)!, "• Value:", double)
}
} catch {
print(error)
}
Дата: 20170101 • Значение: 0,17
Дата: 20170102 • Значение: 1,0
Дата: 20170103 • Значение: 0,68
Дата: 20170104 • Значение: 0,61
Дата: 20170105 • Значение: 1,03
Дата: 20170106 • Значение: 0,48
Дата: 20170107 • Значение: 0,52
Дата: 20170108 • Значение:0,51
Дата: 20170109 • Значение: 0,28