繁体   English   中英

如何使用 JSONDecoder 将 Int 解码为字符串?

[英]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

所以实际上我想要一个从IntString的自定义解析。 我怎样才能达到这个结果?

你可以试试

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM