Было много поисков без успеха. На мой взгляд, контроллер на viewDidLoad я вызываю функцию с именем callJson. Затем он устанавливает данные, привязанные к UITableView. Все это отлично работает в первый раз. Теперь у меня также есть UIRefreshControl, и когда я его вытаскиваю, он вызывает вызов к той же функции, callJson, и здесь, во второй попытке, я получаю позорную ошибкуSwift UIViewController tableView.reloadData nil wrapping при втором вызове
фатальная ошибка: неожиданно найден nil во время разворачивания опционально значение on self.tableView.reloadData()
Вот функция, которая делает запрос json и говорит, чтобы перезагрузить таблицу новыми данными.
func callJson(){
JSONOperations.sharedInstance.JsonRequest(roadType: Helpers.RoadWayTypes.ALERTS, imageId: nil) {(json: NSDictionary) in
do {
//unbox alerts
let aData: Alerts = try unbox(dictionary: json as! UnboxableDictionary)
self.alerts = aData
self.tableView.reloadData()
}
catch {
print(error)
}
}
}
установка Tableview данных клеток
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let alertD = alerts?.Alerts[indexPath.row] {
let cell = self.tableView.dequeueReusableCell(withIdentifier: "AlertTableViewCell") as! AlertTableViewCell
cell.name.text = alertD.Summary
cell.icon.image = Helpers.listImage24dp(id: alertD.TOA)
cell.selectionStyle = .none
if alertD.Url.characters.count == 0 {
cell.isUserInteractionEnabled = false
return cell
}
cell.isUserInteractionEnabled = true
cell.name.textColor = UIColor.blue
return cell
}
return UITableViewCell()
}
Когда я поставил точку останова только до self.tableView.reloadData() и ступить, он идет к выходу, определенной, но затем бросает нулевую ошибку , Я не уверен, нужно ли мне настраивать вещи по-другому в tableView или что-то еще, поскольку оно работает правильно в первый раз. Любая помощь/идеи, которые нужно попробовать, оценивают.
Вы уверены, что используете розницу для настольного экрана? –
Да, в противном случае это не сработало бы в первый раз, если по какой-то причине розетка не упала между первым вызовом и вторым, если бы я не понял, почему и как его восстановить. –