(这是这个问题的后续:Using Decodable protocol with multiples keys。)
我有以下 Swift 代码:
let additionalInfo = try values.nestedContainer(keyedBy: UserInfoKeys.self, forKey: .age)
age = try additionalInfo.decodeIfPresent(Int.self, forKey: .realage)
我知道如果我使用decodeIfPresent
并且没有该属性,如果它是可选变量,它仍然会正确处理它。
例如,以下 JSON 可以使用上面的代码对其进行解析。
{
"firstname": "Test",
"lastname": "User",
"age": {"realage": 29}
}
以下 JSON 也可以使用。
{
"firstname": "Test",
"lastname": "User",
"age": {"notrealage": 30}
}
但以下不起作用。
{
"firstname": "Test",
"lastname": "User"
}
我怎样才能使所有 3 个示例都起作用?有没有类似于decodeIfPresent
for 的东西nestedContainer
?