【问题标题】:Delete from Core Data从核心数据中删除
【发布时间】:2016-04-16 16:12:03
【问题描述】:

我正在开发一个 iOS 应用程序,该应用程序将一些数据存储在 Core Data 中。当我不得不从 Core Data 中删除特定数据时,我发现了一个问题。

虽然说删除成功,但是存储的元素个数是一样的。

你能看一下吗?

代码如下:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext
    let fetchRequest = NSFetchRequest(entityName: "Session")
    fetchRequest.returnsObjectsAsFaults = false

    do
    {
        var session = try managedContext.executeFetchRequest(fetchRequest) as! [Session]

            managedContext.deleteObject(session.first!)
        if session.first!.deleted {
            print("Succesfully deleted")
            print(session.count)
        }
        else {
            print("Unsuccesfull")
        }


    } catch  {
            print("Detele error : \(error)")
    }

【问题讨论】:

  • 您需要保存上下文 - 如果获取的数组为空,您的代码将可靠地崩溃(do - catch 表达式无法捕捉到这一点)。

标签: ios database swift core-data


【解决方案1】:

正如@Vadian 所说,您忘记保存上下文。

所以让我们实现它:

do {
   try managedContext.save()  
} catch let error as NSError {
   print(error)
}

【讨论】:

  • 其实save这一行也可以放在已有的do块中。
  • 啊,我忘了保存,现在可以了..谢谢!
  • 当您投票或/并将答案标记为正确时,感恩节会更加愉快;)
猜你喜欢
  • 2016-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多