iVe*_*tis 6 ios swift codable decodable swift5
有没有办法保留 Swift 对 Decodable 类的默认实现,其中只有 Decodable 对象但有一个例外?例如,如果我有一个这样的结构/类:
struct MyDecodable: Decodable {
var int: Int
var string: String
var location: CLLocation
}
Run Code Online (Sandbox Code Playgroud)
我想使用默认解码int,string但location自己解码。所以在init(from decoder:)我想有这样的事情:
required init(from decoder: Decoder) throws {
<# insert something that decodes all standard decodable properties #>
// only handle location separately
let container = try decoder.container(keyedBy: CodingKeys.self)
location = <# insert custom location decoding #>
}
Run Code Online (Sandbox Code Playgroud)
有没有办法保留 Swift 对 Decodable 类的默认实现,其中只有 Decodable 对象,但有一个例外
抱歉不行。要可解码,所有属性都必须是可解码的。如果您要编写自定义init,则必须自己初始化(并因此解码)所有属性。
Apple 知道这很痛苦,并且已经考虑过这个问题,但现在init对可解码器的自定义是全有或全无的。
正如评论中所建议的那样,您可以通过将结构分成两种不同的类型来解决这个问题。这样你就可以拥有一个只有一个属性的类型,你手动初始化它,你就完成了。
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |