swift - 如何从 data core swift 4 中删除 tableview index.row

标签 swift core-data core

我创建了一个名为 Medications 的实体,添加新数据的函数是:

@objc func saveUserSettings() {

    SVProgressHUD.show()

    let name = medicationNameTextField.text
    let dosage = dosageTextField.text
    let frequency = medicationNameTextField.text
    let reminder = dosageTextField.text

    let medication = Medications(context: PersistenceService.context)
    medication.name = name
    medication.dosage = dosage
    medication.frequency = frequency
    medication.reminder = reminder

    PersistenceService.saveContext()
    self.meds.append(medication)

}

在表格 View 单元格中按下删除按钮时,如何删除这些索引之一?

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

    if editingStyle == .delete {

        meds.remove(at: indexPath.row)

        let task = meds[indexPath.row]

        PersistenceService.saveContext()

        self.tableView.reloadData()
    }        

}

有什么想法吗?

最佳答案

在这里从数组中删除

meds.remove(at: indexPath.row)

不会自动将其从 coreData 中删除,您需要使用

context.delete(object)

在保存上下文之前,请参阅此处 Swift 3 Core Data Delete Object

也要按照正确的顺序去做

let task = meds[indexPath.row]

context.delete(task) // access context anywhere but this statement should run

PersistenceService.saveContext()

meds.remove(at: indexPath.row)

关于swift - 如何从 data core swift 4 中删除 tableview index.row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53091737/

相关文章:

xcode - 为什么 SKNode 在 SpriteKit 游戏中对触摸没有反应?

ios - 核心数据文件位于何处?

ios - 当上下文为 nil 时,Swift Temp CoreData 对象无法设置 ivars

sitecore - 在核心数据库的 Sitecore 后端中保存时出错

如果不重新启动应用程序,iOS storyBoard 本地化将无法工作

ios - someConstant?.isKindOfClass(SomeClassType) 的计算结果总是为真

ios - 需要向我的 iOS 应用程序添加一个 "Embed Watch Content"构建阶段

ios - NSManagedObject 类并创建一个 Setter 方法

java - 将值保存在内存中并获取它

c++ - 如何设置参与计算的 CPU 内核数(C++ 和 OpenMP)