Ios 如何用codable编写转换器?

Ios 如何用codable编写转换器?,ios,swift,codable,Ios,Swift,Codable,让我们考虑一个场景,在该场景中,我希望在Codable中填充模型,如下所示 struct SampleModel: Codable { let showId: String } 我们从服务器收到的响应是'showId:'one'。但是,我想将其保存为'First'而不是'one' 有没有办法处理Codable?如果我没弄错的话 struct SampleModel: Codable { let showId: String enum CodingKeys: String

让我们考虑一个场景,在该场景中,我希望在
Codable
中填充模型,如下所示

struct SampleModel: Codable {
    let showId: String
}
我们从服务器收到的响应是'showId:'one'。但是,我想将其保存为'First'而不是'one'

有没有办法处理
Codable

如果我没弄错的话

struct SampleModel: Codable {
    let showId: String
    enum CodingKeys: String, CodingKey {
        case showId
    }

    init(from decoder: Decoder) throws {

        let container = try decoder.container(keyedBy: CodingKeys.self)

        do {

            let id = try container.decode(String.self, forKey: .showId)
            let stored = id == "one" ? "First" : "default"
            self.init(showId:stored)

        } catch {
            print(error)
            throw error
        }
     }
}

创建查找并使用Codable进行手动解码,不。事实上,您想要做的大部分事情都不会涉及Codable,而是字符串操作。现在,我只需要忽略可编码部分,并找出如何将
one
映射到
first
two
映射到
second
,等等。我使用了mantle框架,在该框架中,我们可以编写transformer来更改值,如果它是一个类,那么重写setter方法可能会起作用@CalebKleveter,我的输入集非常少,只有10个,我只需创建一个字典(其他语言的hashmap)就可以做到。这正是我想要的。