Core data:TableViewの行削除後に空のTableViewCellが残る
TableViewに表示されているname(CoreDataのentityはPerson)のリストをスワイプで削除するfunctionを書いたのですが、行の削除後に空のセルが表示されたままになります。最下行を消した場合は、消した後に新たにレコードを追加すると、空のセルの下にレコードができます。tableViewのリロードだけで足りないということだと思いますが、どうすればよいでしょうか。
アプリを再起動した場合は、削除された行は空にはならず上に詰めて表示されます。
@IBOutlet weak var tableView: UITableView!
var people: [NSManagedObject] = []
extension ViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return people.count
}
func tableView(_ tableView: UITableView,
cellForRowAt indexPath: IndexPath)
-> UITableViewCell {
let person = people[indexPath.row]
let cell =
tableView.dequeueReusableCell(withIdentifier: "Cell",
for: indexPath)
cell.textLabel?.text = person.value(forKeyPath: "name") as? String
return cell
}
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
guard let appDelegate =
UIApplication.shared.delegate as? AppDelegate else {
return
}
let managedContext =
appDelegate.persistentContainer.viewContext
let person = people[indexPath.row]
managedContext.delete(person)
do {
try managedContext.save()
people.append(person)
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
tableView.reloadData()
}
}
}