Обработка 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)}
}