«NSInternalInconsistencyException» - ошибка при удалении элементов из UITableView - Swift - PullRequest
1 голос
/ 30 апреля 2020

У меня есть список элементов, отображаемых в моем табличном представлении. Каждый элемент имеет свойство isComplete, и я хочу удалить каждый элемент, для которого это свойство имеет значение true. Я использую следующий код, чтобы найти элементы, получить их IndexPaths, а затем удалить их из моего Списка и TableView.

var checkedItems: [Int] = []
var checkedIndexPaths: [IndexPath] = []

@IBAction func removeButtonTapped(_ sender: UIButton) {
    tableView.beginUpdates()
    for item in self.list.items {
        if item.isComplete == true {
            let tempTitle = item.name
            let found = self.list.items.firstIndex(where: {$0.name == tempTitle})
            //checkedItems.append(found!)
            let indexPath = IndexPath(row: found!, section: 0)
            checkedIndexPaths.append(indexPath)
            self.list.items.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
        }
    }
    //tableView.beginUpdates()
    //tableView.deleteRows(at: checkedIndexPaths, with: .fade)
    let vcTitle = self.navigationItem.title
    let found = self.lists.firstIndex(where:{$0.title == vcTitle})
    self.lists[found!] = self.list
    List.saveLists(self.lists)
    tableView.endUpdates()
}

Этот код работает, как и предполагалось, когда я хочу удалить только один элемент из мой список. Однако, когда я пытаюсь удалить более одного элемента, я получаю следующее сообщение об ошибке после выполнения removeButtonTapped.

2020-04-30 14:16:14.248338+0200 ShoppingList[44150:2710909] *** Assertion failure in -[UITableView _Bug_Detected_In_Client_Of_UITableView_Invalid_Number_Of_Rows_In_Section:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore_Sim/UIKit-3901.4.2/UITableView.m:2407
2020-04-30 14:16:14.254750+0200 ShoppingList[44150:2710909] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (2) must be equal to the number of rows contained in that section before the update (4), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...