我有一个EmailVerificationStatus
枚举,其类型为String
,该类型符合Codable
协议:
enum EmailVerificationStatus: String, Codable {
case unverified
case verified
}
我正在使用的Web服务在大写(UNVERIFIED
/VERIFIED
)中发送这些案例。如何使用CodingKeys
枚举来映射这种差异?像以下内容不起作用:
enum CodingKeys: String, CodingKey {
case unverified = "UNVERIFIED"
case verified = "VERIFIED"
}
好。那很简单。无需CodingKeys
:
enum EmailVerificationStatus: String, Codable {
case verified = "VERIFIED"
case unverified = "UNVERIFIED"
}
这就是我通常这样做的方式:
struct EmailVerificationStatus: String, Codable {
var unverified: String
var verified: String
enum CodingKeys: String, CodingKey {
case unverified = "UNVERIFIED"
case verified = "VERIFIED"
}
}
我建议您将struct用于电子邮件...键入枚举编码键并在结构内嵌套。CodingKeys允许您使用源数据案例(来自WebService)映射结构变量。
struct EmailVerificationStatus: String, Codable {
var unverified: String
var verified: String
enum CodingKeys: String, CodingKey {
case unverified = "UNVERIFIED"
case verified = "VERIFIED"
}
}
当您的枚举具有关联的值是将Codable
合规性纳入扩展名时,它会有所帮助,然后它不会抱怨您实现codingkeys enum。
类似的东西:
enum EmailVerificationStatus: String {
case unverified
case verified(email:String)
}
extension EmailVerificationStatus: Codable {
enum CodingKeys: String, CodingKey {
case unverified = "UNVERIFIED"
case verified = "VERIFIED"
}
}