问题描述
class LBSModel: Codable {
let unApproved: Int?
let backApproved : BackApproved
enum CodingKeys: String,CodingKey {
case unApproved = "UnApproved"
case backApproved = "BackApproved"
}
init(unApproved: Int?,backApproved: BackApproved) {
self.unApproved = unApproved
self.backApproved = backApproved
}
}
enum BackApproved: Codable {
case double(Double)
case int(Int)
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
if let x = try? container.decode(Double.self) {
self = .double(x)
return
}
if let x = try? container.decode(Int.self) {
self = .int(x)
return
}
throw DecodingError.typeMismatch(BackApproved.self,DecodingError.Context(codingPath: decoder.codingPath,debugDescription: "Wrong type for Available"))
}
func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
switch self {
case .double(let x):
try container.encode(x)
case .int(let x):
try container.encode(x)
}
}
}
实际上,我已经将模型类声明为Int类型,但是从服务器端来看,有一段时间是Int值,有些时候是Double,所以我已经为各自的对象声明了这两种数据类型。
现在我想从BackApproved获得价值,它可以是int或double。我正在使用可编码协议。 那么如何实现这一目标,请帮助我。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)