[英]How can I use JSONDecoder to decode a Int to a String?
我正在从API
JSON
如下所示:
let model = try? JSONDecoder().decode(Person.self, from: parsedData)
// MARK: - Person
struct Person: Codable {
let position
let rank: Int
}
问题是当我想用rank
设置UILabel
的值时,因为我想添加一个'#',所以我必须按照以下方式进行:
labelRank.text = "#" + "\(person.rank)"
实际上我想做的是:
labelRank.text = person.rank
所以实际上我想要一个从Int
到String
的自定义解析。 我怎样才能达到这个结果?
你可以试试
struct Person: Codable {
var position: Int
var rank: String
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
position = try container.decode(Int.self, forKey: .position)
let decodedName = try container.decode(Int.self, forKey: .rank)
rank = "# \(decodedName)"
}
}
您可以有一个计算属性rankAsString ,它将在 Person 结构中返回"#" + "\(rank)"
,如下所示。
struct Person: Codable {
let position: Int
let rank: Int
var rankAsString: String {
return "#" + "\(self.rank)"
}
}
然后使用它来填充 label,如下所示。
labelRank.text = rankAsString
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.