Я пишу программу, используя Swift 4 и Xcode 9.2. Я столкнулся с трудностями при написании кодируемого класса (именно класса, а не структуры). Когда я пытаюсь наследовать один класс от другого, JSONEncoder не берет все свойства из подкласса (дочернего). Пожалуйста, посмотрите на это:
class BasicData: Encodable {
let a: String
let b: String
init() {
a = "a"
b = "b"
}
}
class AdditionalData: BasicData {
let c: String
init(c: String) {
self.c = c
}
}
let encode = AdditionalData(c: "c")
do {
let data = try JSONEncoder().encode(encode)
let string = String(data: data, encoding: .utf8)
if let string = string {
print(string)
}
} catch {
}
Он напечатает это: {"a":"a","b":"b"}
Но мне нужно это: {"a":"a","b":"b","c":"c"}
Похоже, что c
свойство класса AdditionalData
просто куда-то и как-то потерялось.
Итак, вопрос: если у меня есть класс, подписанный протоколом Encodable, как правильно сделать класс подкласса (дочерний класс, наследующий)?
Буду благодарен за любую помощь или совет.