1

[Xcode 9,斯威夫特 4]

我测试以下代码:

为什么输出是-1,而不是1?

class A: Codable {

}

class A_a: A {
    var a: Int = -1
}

let json = """
{
"a": 1
}
"""
let jsonData = json.data(using: .utf8)!

let obj =  try? JSONDecoder().decode(A_a.self, from: jsonData)

obj?.a
4

1 回答 1

0

Codable 是一种special协议。它的使用受到严格监管。例如,您无法在扩展中确认它。您只能依赖在其声明中确认为 Codable 的类型。

我认为,这是因为代码生成的工作原理。

于 2018-04-11T10:12:54.340 回答