我正在实现一个UITableView。我也在用CoreData。它工作正常,但当我尝试删除一行时,会出现以下错误:
断言失败-[UITableView\uEndCellAnimationsWithContext:]
以下是我的实现:
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-你只需要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)
关于ios - iOS:删除UItableviewCell时出错:-[UITableView _endCellAnimationsWithContext:]中的断言失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56673175/