CoreData 清除和属性表视图中的数据

CoreData Clear and Attributes data in a tableView

我看了很多,似乎没有一个明确的答案? 我有一个 table 视图控制器,当我删除单元格并希望它删除第二个 table 视图控制器中显示的数据时,它通过 segue 链接到该视图控制器。因此,删除时应清除核心数据属性形状。使用下面的代码,我只能删除属性中的一对密钥,而不是全部。

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        context!.delete(array[indexPath.row])
        array.remove(at: indexPath.row)
        let fetchRequest = NSFetchRequest<Notes>(entityName: "Notes")
        fetchRequest.predicate = NSPredicate(format: "shape = %@")
        saveList()
        do {
            let shapes = try context!.fetch(fetchRequest)
            for shape in shapes {
                context!.delete(shape)
                let managedObjectData:NSManagedObject = shape as NSManagedObject
                context!.delete(managedObjectData)
            }
            try context!.save()
        } catch _ {
            // error handling
        }
        tableView.reloadData()
    }
}

有没有一种简单的方法可以清除属性的所有数据?

是的,最快和正确的方法是使用 Coredata 删除规则。我想在 CoreData 模型中你有一对多的关系——每种颜色都与某种形状相关。 因此,在 Coredata 编辑器中继续使用身份检查器 将关系的删除规则设置为 cascade。这意味着一旦你删除了一种颜色,它所有对应的形状都会自动从 Persistence 存储中删除,无需通过循环手动删除它们!