在单个 class 中处理相同值的 2 个键

Handling 2 keys for same value in single class

我有一个用例,其中我使用

获得分数形式 JSON
let score = json["score_test"].arrayValue.map {Score.decode(json: [=11=])}

我必须重用这个 class 来响应,其中只有 key 用于值更改,即

let score = json["score"].arrayValue.map {Score.decode(json: [=12=])}

有没有什么办法可以让我得到Score object的数据 key是score_testscore 取决于 JSON 使用相同的 class?

我也尝试过使用 nil 检查,但由于对象已初始化,因此无法正常工作。

分数模型:

class Score: Object, Decoder {

    dynamic var id:     String = ""
    dynamic var title:  String = ""
    dynamic var body:   String = ""
    dynamic var cardOrder: Int = 0

    dynamic var video:  Video? = nil

    override static func primaryKey() -> String? {
        return "id"
    }

    typealias T = Score

    // MARK: Decoder method
    static func decode(json: JSON) -> Score {
        let id = json["_id"].stringValue
        let title = json["title"].stringValue
        let body = json["data"].stringValue
        let cardOrder = json["card_order"].intValue

        var video: Video?
        if (json["video"].exists()) {
            video = Video.decode(json: json["video"])
        }

        let score = Score()
        score.id = id
        score.title = title
        score.body = body
        score.video = video
        score.cardOrder = cardOrder

        return score
    }
}

据我了解,score 属于 [Score] 类型,所以我要做的是:

var score = json["score_test"].arrayValue.map {Score.decode(json: [=10=])}

if score.isEmpty {
    score = json["score"].arrayValue.map {Score.decode(json: [=10=])}
}