我按下按钮时尝试更新我的核心数据,当应用程序在一个会话中运行时,它看起来都很好,但是当我重新启动应用程序时,我所做的更新不再存在。我的代码如下所示:
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
}
}
为什么会这样?重新启动我的应用程序后,更改始终会恢复。
任何建议都将不胜感激。
答案 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)