Rob*_*ith 0 swift swift4 jsondecoder
我正在使用 Swift 4 和JSONDecoder. 我有以下结构:
struct Customer: Codable {
var id: Int!
var cnum: String!
var cname: String!
}
Run Code Online (Sandbox Code Playgroud)
注意:这些字段不能是可选的。
现在我有一个 JSON 字符串:
[
{
"id": 1,
"cnum": "200",
"cname": "Bob Smith"
},
{
"id": 2,
"cnum": "201",
"cname": null
}
]
Run Code Online (Sandbox Code Playgroud)
为了对其进行解码,我使用以下命令:
let decoder = JSONDecoder()
let customers = try decoder.decode([Customer].self, from: json)
Run Code Online (Sandbox Code Playgroud)
除了空数据被转换为 nil 之外,一切正常。我的问题是,将传入的 nil 转换为空字符串(“”)的最简单方法是什么?
我想用最少的代码来做到这一点,但我不确定正确的方法以及在什么时候可以将 nil 转换为空字符串。预先谢谢你。
您可以使用支持 ivars:
struct Customer: Codable {
var id: Int
var cnum: String {
get { _cnum ?? "" }
set { _cnum = newValue }
}
var cname: String {
get { _cname ?? "" }
set { _cname = newValue }
}
private var _cnum: String?
private var _cname: String?
private enum CodingKeys: String, CodingKey {
case id, _cnum = "cnum", _cname = "cname"
}
}
Run Code Online (Sandbox Code Playgroud)
由于自定义CodingKeys,JSON 解码器实际上会解码为_cnum和_cname,它们是可选字符串。我们在属性 getter 中将 nil 转换为空字符串。
| 归档时间: |
|
| 查看次数: |
5412 次 |
| 最近记录: |