删除核心数据条目不起作用

Posted

技术标签:

【中文标题】删除核心数据条目不起作用【英文标题】:delete core data entry doesn't work 【发布时间】:2015-07-31 16:45:52 【问题描述】:

我尝试使用 Swift 删除核心数据条目。我还使用 fetched results 控制器来加载条目。这是我的代码:

    let context = self.fetchedResultsController.managedObjectContext
    let fetchRequest = NSFetchRequest(entityName:"Person")
    fetchRequest.predicate = NSPredicate(format: "name = '\(item)'")
    var error : NSError?

    if let results = context.executeFetchRequest(fetchRequest, error:&error),
       let managedObject = results.first as? NSManagedObject 
       context.deleteObject(managedObject)
    

我不知道为什么,但是如果此代码运行,则条目将从表中删除,但如果我重新启动应用程序,表中包含我已删除的任务。

【问题讨论】:

【参考方案1】:

这只会从托管对象上下文中删除对象(这是进行更改的暂存器)。要将托管对象上下文中所做的任何事情持久保存到底层数据库,您需要先将其保存:

 if let results = context.executeFetchRequest(fetchRequest, error:&error),
       let managedObject = results.first as? NSManagedObject 
       context.deleteObject(managedObject)
    

let saveError: NSError?
context.save(&saveError)

【讨论】:

【参考方案2】:

您需要保存。

Swift 1.2

context.save(nil)

斯威夫特 2

do  try context.save()  catch 

【讨论】:

以上是关于删除核心数据条目不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从核心数据中删除记录不起作用?

NativeQuery 删除重复的 Oracle SQL Db 表条目不起作用(参见代码)

MySQL:删除行中的重复条目不起作用

邮递员的简单删除请求不起作用

使用数据库拦截器的实体框架软删除实现不起作用

Arraylist 中有 1000 个条目的 AutocompleteTextView 不起作用