Я извлекаю данные из CloudKit, и в данных есть только один элемент.Ошибка приложения при загрузке таблицы Строка
Как только matchup
нагрузок и перед тем цвет фона виден в пользовательском интерфейсе, то приложение падает. Я не могу понять, почему, какие-то идеи?
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()
}
}
UPDATE:
Получил аварии, с ошибкой "Фатальная ошибка: индекс вне диапазона".
Я не знаю, почему это, потому что matchupArray.count
является 1, то rowCount
1. Он начал итерацию через for-loop
с i
как 0, и закончил первую итерацию, где она должна быть остановлена, так как там было только 1 шт. Но я получил крах, потому что он начал повторять цикл снова, с i
как 1, а затем, очевидно, ничего не нашел, поэтому он разбился.
Аварийный сигнал приходит после row?.matchup.setText(self.matchupArray[i])
.
если вы делаете эту строку .groupColor.setBackgroundColor (colorBackground) на фоне потоков приложение может привести к сбою –
@KuntalGajjar спасибо за ответ?! Хм, возможно, это похоже на то, что я нахожусь в фоновом потоке? Просто интересно, потому что это не похоже на то, что я прыгаю в фоновом потоке для 'getCloudKit', но я мог бы полностью потерять то, что кто-то вроде вас может увидеть быстрее меня. – SRMR
Вы можете попробовать сделать это self.performSelectorOnMainThread (#selector (CLASSNAME. LoadTable), withObject: nil, waitUntilDone: true) –