gpt4 book ai didi

swift - 添加枚举后失去了对 Codable 的一致性

转载 作者:行者123 更新时间:2023-12-05 03:40:04 27 4
gpt4 key购买 nike

所以我有一个可编码(或曾经是)的结构

struct Person  { 
let name: String //<-- Fine
let age: Int //<-- Fine
let location: String //<-- Fine

let character: Character. //<-- Here comes the error (Type Person does not conform to Decodable)

}

enum Character {
case nice, rude
}

现在我明白了错误。除了枚举之外的每种类型都是 Codable 的,所以在那之前我都很好。现在作为解决这个问题的方法..我很确定这会起作用..

extension Person { 
private enum CodingKeys: CodingKey { case name, age, location }
}

但是即使在告诉 Swift 我想要解码的属性之后我仍然会得到这个错误?不解。

最佳答案

由于您从 key 中排除了 character 进行解码,因此您需要为 character 提供一个初始值。毕竟,所有属性都需要在初始化期间初始化为某个值

最简单的方法是给出nil的初始值:

let character: Character? = nil

当然,你也可以这样做:

let character: Character = .rude

另请注意,您可以使枚举Codable,只需为其提供原始值类型即可:

enum Character: Int, Codable {
// now nice will be encoded as 0, and rude will be encoded as 1
case nice, rude
}

关于swift - 添加枚举后失去了对 Codable 的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68296512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com