Я не могу установить свойство b
в дочернем классе. Это родительский класс, который наследуется от Codable
, и, кажется, работает хорошо.
Я чувствую, что упускаю что-то действительно очевидное, но мне трудно видеть древесину для деревьев.
Ниже приведен пример моей проблемы на игровой площадке. b
остается 0, несмотря на то, что установлено на 10
. Это дочерний класс, который передается, но родительское свойство, которое может быть установлено (очень странно!).
class Primary : Codable {
var a: Int = 0
}
class Secondary : Primary {
var b: Int = 0
}
let c = Secondary.self
func testRef<T: Codable>(_ t: T.Type) {
let json = "{\"a\":5, \"b\" : 10}".data(using: .ascii)!
let testCodable = try? JSONDecoder().decode(t.self, from: json)
print("a >> \((testCodable as! Primary).a)")
print("b >> \((testCodable as! Secondary).b)")
}
testRef(c)
Вывод этого:
a >> 5
b >> 0
Любые советы или указатели будут с благодарностью приняты.
- пробовал в Xcode 9.3, Swift 4.1