以下代码会将项目保存到CoreData:
var elements:[Elements]
elements = try managedObjectContext.fetch(itemsFetch) as! [Elements]
do {
elements.append(el)
try managedObjectContext.save()
} catch let error as NSError {
print("Failed to save an element", error)
}
以下确实删除了一个元素。我在调试器中看到元素数量减少了一个。
elements.remove(at: 5)
do {
try managedObjectContext.save()
} catch {
fatalError("Error deleting element")
}
但是当我停止应用程序并重新启动时,旧元素又回来了。我有什么想法吗?
答案 0 :(得分:1)
第一个示例将元素附加到数据源数组。该项目已添加到核心数据中,并在其他位置添加NSEntityDescription.insertNewObject(forEntityName:into
。
以同样的方式,你必须从数据源数组中删除元素,也从Core Data
中删除元素let elementToRemove = elements[5]
managedObjectContext.delete(elementToRemove)
elements.remove(at: 5)
答案 1 :(得分:1)
您可以尝试以下代码:
var elements: [NSManagedObject] = []
//Delete from core data
func tableView(_ tableView: UITableView, commit editingStyle:
UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
let context = (UIApplication.shared.delegate as!
AppDelegate).persistentContainer.viewContext
if editingStyle == .delete {
let element = elements[indexPath.row]
context.delete(element)
(UIApplication.shared.delegate as! AppDelegate).saveContext()
do {
elements = try context.fetch(YOUR_ENTITY_NAME.fetchRequest())
} catch {
print(error)
}
}
tableView.reloadData()
}