【发布时间】:2017-10-17 00:10:34
【问题描述】:
我正在尝试创建继承的数据模型,以便使用 JSONDecoder 解析它。
class FirstClass : Codable {
let firstClassProperty: Int
final let arrayOfInts: [Int]
}
class SecondClass : FirstClass {
let secondClassProperty1: Int
let secondClassProperty2: Int
private enum CodingKeys : String, CodingKey {
case secondClassProperty1, secondClassProperty2
}
required init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
secondClassProperty1 = try container.decode(Int.self, forKey: .secondClassProperty1)
secondClassProperty2 = try container.decode(Int.self, forKey: .secondClassProperty2)
try super.init(from: decoder)
}
}
我将此 JSON 用于FirstClass:
{
"firstClassProperty": 123,
"arrayOfInts": [
123
]
}
这是SecondClass:
{
"firstClassProperty": {},
"secondClassProperty1": {},
"secondClassProperty2": {}
}
如果在这种情况下关键字 final 不起作用,我如何才能摆脱子类中的 arrayOfInts 而让它出现在超类中?
这里是Playground。感谢您的回答!
【问题讨论】:
-
如果不是总是需要
arrayOfInts,为什么它会出现在你的基类中? -
这里似乎不需要层次结构。
标签: ios json swift swift4 codable