swift 枚举忽略 CodingKeys

问题描述 投票:0回答:1

我有一些嵌套的 swift 类,它们使用

JSON
协议从
Decodable
自动解码。除了这个枚举外,一切正常。

json数据是大写的字符串

Open
Fulfilled

如果我使用这个枚举,一切都可以完美解码:

enum Status: String, Codable {
    case Open, Fulfilled
}

但是我试图让案例不使用像这样的大写字母:

enum Status: String, Codable {
    
    case open, fulfilled
    
    private enum CodingKeys: String, CodingKey {
        case open       = "Open"
        case fulfilled  = "Fulfilled"
    }
}

这给了我一个解码错误说:

调试说明:“无法从无效的字符串值打开初始化状态”

Do

CodingKeys
枚举不是这样工作的吗?

swift enums codable decodable
1个回答
0
投票

由于枚举的原始值类型是

String
,您可以将正确的字符串直接分配给枚举项

enum Status: String, Codable {
    case open = "Open"
    case fulfilled = "Fulfilled"
}
© www.soinside.com 2019 - 2024. All rights reserved.