我从Codable类继承,父类的属性被解码,而子类没有被解码。请检查下面的代码段。我需要了解如何以通用方式解决此问题。
import Foundation
class APIDataClass: Codable {
var status: Int? = 0
}
class User1: APIDataClass {
var name: String?
var age = 32
}
let jsonData = Data("""
{
"name": "Amy",
"age": 20,
"status": 2
}
""".utf8)
let decoder = JSONDecoder()
let user1 = try! decoder.decode(User1.self, from: jsonData)
print("=====User1: APIDataClass=====")
print("name: \(user1.name ?? "unknown")") // Not decoded, WHY?
print("age: \(user1.age)") // Not decoded, WHY?
print("status: \(user1.status ?? -1)") // Yes, decoded
class User2: Codable {
var name: String?
var age = 32
var status: Int? = 0
}
let user2 = try! decoder.decode(User2.self, from: jsonData)
print("=====User2: Codable=====")
print("name: \(user2.name ?? "unknown")")
print("age: \(user2.age)")
print("status: \(user2.status ?? -1)")
/*
Output:
=====User1: APIDataClass=====
name: unknown
age: 32
status: 2
=====User2: Codable=====
name: Amy
age: 20
status: 2
Program ended with exit code: 0
*/