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 存储中删除,无需通过循环手动删除它们!
我看了很多,似乎没有一个明确的答案? 我有一个 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 存储中删除,无需通过循环手动删除它们!