Here's the code .....
struct Inverter {
let name: String
let usage: Int
enum CodingKeys: String, CodingKey {
case name
case usage
}
init(name: String, usage: Int) {
self.name = name
self.usage = usage
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(name, forKey: .name)
try container.encode(usage, forKey: .usage)
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
name = try container.decode(String.self, forKey: .name)
usage = try container.decode(Int.self, forKey: .usage)
}
}
struct BaseLine: Codable {
let uniqueId: Int
let sceneText: String
let wayThrough: [Inverter]
enum CodingKeys: String, CodingKey {
case uniqueId
case sceneText
case wayThrough
}
init(uniqueId: Int, sceneText: String, wayThrough: [Inverter] ) {
self.uniqueId = uniqueId
self.sceneText = sceneText
self.wayThrough = wayThrough
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(uniqueId, forKey: .uniqueId)
try container.encode(sceneText, forKey: .sceneText)
try container.encode(wayThrough, forKey: .wayThrough) Compiler says - ! Reference to member 'wayThrough' cannot be resolved without a contextual type
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
uniqueId = try container.decode(Int.self, forKey: .uniqueId)
sceneText = try container.decode(String.self, forKey: .sceneText)
wayThrough = try container.decode([Inverter].self, forKey: .wayThrough) Compiler says- Ambiguous reference to member 'decode(_:forKey:)'
}
}