微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。