swift - 将已删除的行保存到核心数据错误 - Swift 3

标签 swift xcode core-data

我发布了一个与此类似的帖子,但我的问题只得到了一半的回答。我希望能够滑动以删除行,然后将该数据保存到我的 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/

相关文章:

swift - swift 中泛型类型的静态存储属性有什么好的替代方法?

swift - 尝试呈现 * 其 View 不在窗口层次结构中

ios - 在 XCode 中更改为映射模型未在模拟器包中更新

ios - 如何对齐 UIBezierPath 圆破折号

Swift 字符串初始值设定项?

ios - 在 subview 之上绘制 UIImage 并与 UIScrollView 交互

xcode - 我们如何在导航栏中的UIBarButtonItem中放置两行

objective-c - 当应用程序为 "Installing"并且可以以编程方式控制它时,iOS 会做什么?

ios - Xcode 核心数据模板试图加载具有错误扩展名的托管对象模型

ios - 托管对象模型初始化