我从CloudKit中提取数据,数据中只有一个项目。
一旦matchup
加载, 之前,在UI中看到背景颜色,应用程序崩溃。我无法弄清楚为什么,任何想法?
InterfaceController
:
func loadTable() {
self.rowTable.setNumberOfRows(self.matchupArray.count, withRowType: "rows")
let rowCount = self.rowTable.numberOfRows
for i in 0...rowCount {
let row = self.rowTable.rowController(at: i) as! Rows!
row?.matchup.setText(self.matchupArray[i])
let colorBackground = UIColor.init(hex: self.teamColorArray[i])
row?.groupColor.setBackgroundColor(colorBackground)
}
}
func getData() {
cloud.getCloudKit { (game: [GameWatch]) in
var teamColorArray = [String]()
var matchupArray = [String]()
for item in game {
teamColorArray.append(item.teamColor)
matchupArray.append(item.matchup)
}
self.teamColorArray = teamColorArray
self.matchupArray = matchupArray
self.loadTable()
}
}
更新:
崩溃,错误"致命错误:索引超出范围"。
我不确定为什么会这样,因为matchupArray.count
为1,rowCount
为1.它开始使用for-loop
迭代i
0,并完成了它应该停止的第一次迭代,因为只有1项。但是我得到了崩溃,因为它开始再次循环遍历循环,i
为1,然后显然没有发现它崩溃。
row?.matchup.setText(self.matchupArray[i])
运行后发生崩溃。
答案 0 :(得分:2)
错误在于:
for i in 0...rowCount
此...
运算符创建一系列索引,其中包含两个值,因为Swift使用基于0的数组,您需要..<
运算符来创建排除较高值的范围。
因此该行应为:
for i in 0..<rowCount