У меня проблемы с переводом моих моделей в словари. Мои модели наследуются от Codable и при использовании JSONSerialization я получаю словарь вида:
(...,"sensors": <__NSArrayI 0x1105324f0>( {
accx = "-0.002471923828125";
accy = "0.011444091796875";
accz = "-1.013595581054688";
gyrox = "-0.029818882093399213";
gyroy = "0.028939506301455049";
gyroz = "0.0044943506556177227"; }, ...)
(Обратите внимание, что мои ключи не в виде строки, а в виде значений)
когда на самом деле хочу этого:
(..., "sensors": [ {
"accx" = -0.002471923828125;
"accy" = 0.011444091796875;
"accz" = -1.013595581054688;
"gyrox" = -0.029818882093399213;
"gyroy" = 0.028939506301455049;
"gyroz" = 0.0044943506556177227;} ], ... )
Мои модели:
class Event: NSObject, Codable {
var latitude: Double?
var longitude: Double?
var speed: Double?
var date: String?
var type: String?
var sensors: [Sensor] = []
}
class Sensor: NSObject, Codable {
var accx: Double?
var accy: Double?
var accz: Double?
var gyrox: Double?
var gyroy: Double?
var gyroz: Double?
}
Я использую это для преобразования в словарь:
extension Encodable {
var dictionary: [String: Any]? {
do{
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
guard let data = try? encoder.encode(self) else { return nil }
let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
print(json)
return json
} catch {
return nil
}
}
}
Я застрял с этим, и я не знаю, иду ли я по правильному пути. Должен ли я изменить способ организации этого словаря?