这是我用于存储数据的模型类
class TeamData {
let teamName : String
let image : String
let nextMatch : String
let matches : [Match]
}
class Match {
let oppositeTeam : String
let matchTimings : String
let matchId : String
}
这是我现在要从中获取数据的数据数组(替代JSON)
var dataArray = [
["teamName":"Arsenal",
"image":"Arsenal",
"nextMatch":"in 2 days",
"matches":[
["oppositeTeam":"teamName",
"matchTimings":"121212",
"matchId":"ID 213432"],
["oppositeTeam":"teamName",
"matchTimings":"121212",
"matchId":"ID 213432"]
],
"fixtures":[
["oppositeTeam":"teamName",
"oppositeTeamScore":"7",
"HomeTeamScore":"4",
"HomeTeamCards":"True",
"oppositeTeamCards":"false",
"fixtureId":"ID 213432”
]
]
]]
这就是我使用dataArray的for循环获取数据的方式。但是现在我现在不知道如何将数据传递给模型类,然后在tableview中使用模型类显示此数据。我为数据模型创建了一个init(),但是我很困惑如何获取匹配的数据:[Match]。
for data in dataArray {
if let matches = data["matches"] as? [[String: Any]] {
for data in matches {
}
}
if let fixtures = data["fixtures"] as? [[String: Any]] {
for data in fixtures {
}
}
}
答案 0 :(得分:1)
问题是您在dataArray中的对象只是字符串数组,而不是具有属性的对象。因此,如果要将其解码为自定义类,请像这样编辑dataArray
class TeamData: Codable {
var teamName : String
var image : String
var nextMatch : String
var matches : [Match]
var fixtures : Fixtures
}
class Match: Codable {
var oppositeTeam : String
var matchTimings : String
var matchId : String
}
在您的课程上使用可编码协议
class Fixtures: Codable {
var oppositeTeam : String
var oppositeTeamScore : String
var homeTeamScore : String
var homeTeamCards : String
var oppositeTeamCards : String
var fixtureId : String
}
也不要忘记创建夹具类
let teamDataArray = JSONDecoder().decode([TeamData].self, from: dataArray)
现在在您可以让dataArray使用JSON解码器对该JSON数组进行解码的地方
teamDataArray[0].image /* This value should be Arsenal */
现在,例如,如果需要,请获取第一个TeamData对象并说出其图像
{{1}}