为什么不能删除但可以添加到CoreData?

时间:2018-02-20 04:10:15

标签: core-data swift3

以下代码会将项目保存到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")
    }

但是当我停止应用程序并重新启动时,旧元素又回来了。我有什么想法吗?

2 个答案:

答案 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()
    }