更正核心数据的正确方法

时间:2015-01-20 16:01:29

标签: ios uitableview swift core-data nsmanagedobject

我按下按钮时尝试更新我的核心数据,当应用程序在一个会话中运行时,它看起来都很好,但是当我重新启动应用程序时,我所做的更新不再存在。我的代码如下所示:

        if let indexPath = self.tv.indexPathForRowAtPoint(point){
            let data = messageList[indexPath.row] as Messages
                if data.read == true{
                println("Message already read")
                }else{
                    data.read = true
                }
         }

为什么会这样?重新启动我的应用程序后,更改始终会恢复。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您必须确保在save实例上调用NSManagedObjectContext。至少应该有AppDelegate中已定义的来电,但您可能希望更频繁地调用它,例如当您的应用程序进入后台或类似场合时。

如需进一步参考,请查看iOS Core Data when to save context?

答案 1 :(得分:1)

您需要在关闭应用程序之前保存NSManagedObjectContext。

例如: AppDelegate.swift

func applicationWillTerminate(application: UIApplication) {
    self.saveContext()
}

仅当您杀死该应用时才有效。

但是如果要在NSManagedObject中进行任何更改后保存上下文,则需要调用mangedObjectContext.save(& error)