Необходимо удалить управляемый объект, вызвав delete (_ :) в контексте управляемого объекта, например:
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let person = people[indexPath.row]
managedContext.delete(person)
И чтобы зафиксировать изменение, вызовите save () в контексте управляемого объекта:
try? managedContext.save()
Затем не забудьте также обновить кэш лиц в вашем контроллере представления:
people.remove(at: indexPath.row)
И, наконец, удалить строку в табличном представлении:
tableView.deleteRows(at: [indexPath], with: .automatic)
Это должно выполнить то, что вы хотите.
Отсутствующая реализация может быть:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
// delete the person in core data
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext = appDelegate.persistentContainer.viewContext
let person = people[indexPath.row]
managedContext.delete(person)
try? managedContext.save()
// remove the person from cache
people.remove(at: indexPath.row)
// delete row from table view
tableView.deleteRows(at: [indexPath], with: .automatic)
}
}