我发布了一个与此类似的帖子,但我的问题只得到了一半的回答。我希望能够滑动以删除行,然后将该数据保存到我的 xcdatamodeld 文件中。我在 xcdatamodeld 中有一个名为 removeTask 的属性,但据我所知。任何帮助表示赞赏
//Removing Tasks
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == UITableViewCellEditingStyle.delete {
// 1)
let task = tasks.remove(at: indexPath.row)
// 2)
saveToCoreData(task: task)
// 3)
tableView.beginUpdates()
tableView.deleteRows(at: [indexPath], with: .fade)
tableView.endUpdates()
}
}
func saveToCoreData(task: Task) {
do {
try managedObjectContext.save()
} catch {
fatalError("Failure to save context: \(error)")
}
}
最佳答案
您必须删除核心数据堆栈中数据源数组和中的对象:
// 1)
let task = tasks.remove(at: indexPath.row)
managedObjectContext.delete(task)
// 2)
saveToCoreData(task: task)
// 3)
tableView.deleteRows(at: [indexPath], with: .fade)
旁注:
-
单个删除操作根本不需要
beginUpdates()/endUpdates()
。
关于swift - 将已删除的行保存到核心数据错误 - Swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42446058/