假设我有一个Opportunity
课,带有一个可选的code
字段
class Opportunity: Codable {
let id: String
let code: String?
enum OpportunityKeys: String, CodingKey {
case id = "opportunityId"
case code = "opportunityCode"
}
required init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: OpportunityKeys.self)
id = try values.decode(String.self, forKey: .id)
if let code = try? values.decode(String.self, forKey: .code) {
self.code = code
}
}
}
有没有办法比使用if let
更好地解析nil值?
答案 0 :(得分:1)
是的,还有更好的方法
code = try values.decodeIfPresent(String.self, forKey: .code)
尽可能避免使用try?
。
答案 1 :(得分:0)
是的,有。
由于code
是可选的只需替换
if let code = try? values.decode(String.self, forKey: .code) {
self.code = code
}
按强>
code = try? values.decode(String.self, forKey: .code)