Swift 5中的模型中声明了多个数据类型时如何设置值

问题描述

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 (将#修改为@)