I'm having trouble translating my models into dictionaries. My models inherit from Codable and when using JSONSerialization I get a dictionary with the form:
(...,"sensors": <__NSArrayI 0x1105324f0>( {
accx = "-0.002471923828125";
accy = "0.011444091796875";
accz = "-1.013595581054688";
gyrox = "-0.029818882093399213";
gyroy = "0.028939506301455049";
gyroz = "0.0044943506556177227"; }, ...)
(Note that my keys are not as string but the values are)
when in fact a want this:
(..., "sensors": [ {
"accx" = -0.002471923828125;
"accy" = 0.011444091796875;
"accz" = -1.013595581054688;
"gyrox" = -0.029818882093399213;
"gyroy" = 0.028939506301455049;
"gyroz" = 0.0044943506556177227;} ], ... )
My models are:
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?
}
Im using this to transform into dictionary:
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
}
}
}
I'm stuck with this and I do not know if I'm going down the right path. Should I change the way I organize this dictionary?