Обработка 2 ключей для одного и того же значения в одном классе

У меня есть случай использования, в котором я получаю счет формы JSON, используя

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

Я должен повторно использовать этот класс для ответа, в котором изменяется только ключ для значения, т.е.

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

Есть ли способ добиться этого, чтобы я мог получить данные объекта Score, независимо от того, является ли ключ Score_test или Score в зависимости от JSON, использующего тот же класс?

Также я попытался использовать nil check, но поскольку объект инициализирован, это не работает.

Модель оценки:

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
    }
}

1 ответ

Решение

Из того, что я понимаю, score имеет тип [Score] так что я бы сделал, это:

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

if score.isEmpty {
    score = json["score"].arrayValue.map {Score.decode(json: $0)}
}
Другие вопросы по тегам