Как использовать протокол Swift Codable для декодирования / кодирования данных, хранящихся в Swift, в виде массива объектов (только с 2 значениями) в (JSON или другой тип представления данных; не имеет значения) ключ = значениеструктура, подобная этой:
Как вы можете видеть ее структуру записи timestamp = value
(у меня нет проблем с форматированием временных отметок, это нормально)
(я знаю, что ранее задавались вопросы о данных, хранящихся в ключах, однако мои вопросы отличаются, поскольку они специфичны для массивов объектов, в которых только 2 значения транскодированы в структуре с плоским ключом = значением).
Вот мой код, он имеет дело с 2 объектами:
MetricResult
= содержит метку времени и значение измерения
MetricResults
= содержит массив MetricResult, который должен бытьправильно закодировано.
Мне уже удалось закодировать для MetricResult
, но при чтении я не знаю, как обращаться с переменными ключами, которые на самом деле содержат сами данные.
struct MetricResult : Codable {
var date = Date()
var result = Int(0)
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: Date.self)
try container.encode(result, forKey: date)
}
init(from decoder: Decoder) throws {
//how do deal with variable key name here??
}
}
struct MetricResults: Codable {
var results = [MetricResult]()
func encode(to encoder: Encoder) throws {
//how do deal with variable key name here??
}
init(from decoder: Decoder) throws {
//how do deal with variable key name here??
}
}
extension Date: CodingKey {
//MARK: - CodingKey compliance
public init?(intValue: Int) {
return nil
}
public init?(stringValue: String) {
self.init(stringFirebase: stringValue)
}
public var intValue: Int?{
return nil
}
public var stringValue: String {
return stringFirebase()
}
}