在单个 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_test或 score 取决于 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=])}
}
我有一个用例,其中我使用
获得分数形式 JSONlet 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_test或 score 取决于 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=])}
}