更新核心数据的正确方法
Correct way to update Core Data
我正在尝试在按下按钮时更新我的核心数据堆栈。当应用程序在一个会话中 运行 时一切看起来都很好,但是当我重新启动应用程序时,我所做的更新不再存在。
我的代码如下所示:
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
}
}
为什么会这样?当我的应用程序重新启动时,更改总是被还原。
您必须确保在 NSManagedObjectContext
实例上调用 save
。至少应该在 AppDelegate
中定义了 on call,但您可能希望更频繁地调用它,例如当您的应用进入后台或类似情况时。
如需进一步参考,请查看 iOS Core Data when to save context?
您需要在关闭应用程序之前保存 NSManagedObjectContext。
例如:
AppDelegate.swift
func applicationWillTerminate(application: UIApplication) {
self.saveContext()
}
这只有在您终止该应用程序后才有效。
但是如果你想在 NSManagedObject 的任何更改后保存上下文,你需要调用 mangedObjectContext.save(&error)
我正在尝试在按下按钮时更新我的核心数据堆栈。当应用程序在一个会话中 运行 时一切看起来都很好,但是当我重新启动应用程序时,我所做的更新不再存在。
我的代码如下所示:
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
}
}
为什么会这样?当我的应用程序重新启动时,更改总是被还原。
您必须确保在 NSManagedObjectContext
实例上调用 save
。至少应该在 AppDelegate
中定义了 on call,但您可能希望更频繁地调用它,例如当您的应用进入后台或类似情况时。
如需进一步参考,请查看 iOS Core Data when to save context?
您需要在关闭应用程序之前保存 NSManagedObjectContext。
例如: AppDelegate.swift
func applicationWillTerminate(application: UIApplication) {
self.saveContext()
}
这只有在您终止该应用程序后才有效。
但是如果你想在 NSManagedObject 的任何更改后保存上下文,你需要调用 mangedObjectContext.save(&error)