iOS: ошибка удаления UItableviewCell: ошибка подтверждения в - [UITableView _endCellAnimationsWithContext:] - PullRequest
0 голосов
/ 19 июня 2019

Я реализую UITableView. Я также использую CoreData. Это работает нормально, но когда я пытаюсь удалить строку, я получаю эту ошибку:

Ошибка подтверждения в - [UITableView _endCellAnimationsWithContext:]

Вот моя реализация:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete{
        guard let appDelegate =
            UIApplication.shared.delegate as? AppDelegate else {
                return
        }

        let managedContext =
            appDelegate.persistentContainer.viewContext

        let fetchRequest =
            NSFetchRequest<NSManagedObject>(entityName: "Developers")
        do {
            let test = try managedContext.fetch(fetchRequest)
            let objectToDelete = test[indexPath.row] 
            managedContext.delete(objectToDelete)
            do{
                try managedContext.save()
            }catch{
                print(error)
            }
        }catch{
            print(error)
        }

        self.tableView.beginUpdates()
        tableView.deleteRows(at: [indexPath], with: .none)
        self.tableView.endUpdates()
    }
} 

Проблема в этой строке tableView.deleteRows(at: [indexPath], with: .none)

Но я не понимаю, почему. Большинство примеров, которые я нашел, реализуют те же 3 строки кода:

self.tableView.beginUpdates()
tableView.deleteRows(at: [indexPath], with: .none)
self.tableView.endUpdates()

Кто-нибудь из вас знает, что я делаю или как обойти эту ошибку?

1 Ответ

1 голос
/ 19 июня 2019

1 - Вам нужно только deleteRows, поэтому избавьтесь от beginUpdates & endUpdates

tableView.deleteRows(at: [indexPath], with: .none) 

2 - Вы удаляете из Coredata, в то время как вы должны удалить из массива dataSource таблицы

let test = try managedContext.fetch(fetchRequest)
let objectToDelete = test[indexPath.row] 
managedContext.delete(objectToDelete)

Как

arr.remove(at:indexPath.row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...