Я работаю над очисткой таблицы. Я добавляю предметы и сохраняю их через объекты Realm. У каждого элемента есть категория, а категории являются разделами в моем табличном представлении. Категории обновляются по мере добавления элементов, и если добавляется новая категория, она отображается в виде раздела в табличном представлении. Это все работает нормально.
Однако удаление является проблемой. Когда пользователь проводит пальцем, чтобы удалить последний элемент в разделе, я хотел бы, чтобы заголовок раздела также удалялся. Вот код, который я использую для управления удалением (через SwipeCellKit):
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {
guard orientation == .right else { return nil }
let deleteAction = SwipeAction(style: .destructive, title: "Delete") { action, indexPath in
//remove from
self.updateModel(at: indexPath)
}
deleteAction.image = UIImage(named: "delete-icon")
return [deleteAction]
}
Функция updateModel () удаляет элемент из Realm.
У меня есть функция, которая также пересчитывает категории:
func loadCategories() {
let localCat = try! Realm().objects(Items.self).filter("list_id = '\(list_id)'").distinct(by: ["item_category"])
var localCatArr : [String] = []
for cat in (localCat) {
localCatArr.append(cat.item_category)
}
categories = localCatArr
if categories.count == 0 {
categories.append("New List")
}
}
И функция, которая перезагружает данные в массиве элементов (которая также пытается перезагрузить представление таблицы):
func loadItems() {
itemsList = try! Realm().objects(Items.self).filter("list_id = '\(list_id)'").sorted(byKeyPath: "item_category")
loadCategories()
tableView.reloadData()
}
В обработчике завершения я попытался вызвать эту функцию и tableView.reloadData, но я получаю сообщение об ошибке в виде:
Завершение работы приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: 'попытка удалить строку 0 из раздела 2, но перед обновлением есть только 2 раздела'
Я думаю, что мне нужно, чтобы numberOfSections () вызывался снова и что-то перестраивалось, но не могу понятькак заставить это произойти без катастрофы. Я на правильном пути со своими мыслями, и какие-либо предложения о том, как заставить это обновить?