不保存上下文的 CoreData 保存
Posted
技术标签:
【中文标题】不保存上下文的 CoreData 保存【英文标题】:CoreData Saving without Saving Context 【发布时间】:2020-11-05 02:34:44 【问题描述】:我在使用 CoreData 时遇到了一些问题。在使用实体之前,我将它们从 Coredata 中删除,并打印出来以确保它们确实被删除。在 for 循环之后,我再次将它们打印出来,即使我没有保存上下文,它们也被保存了。当我杀死应用程序并重新加载时,数据就在那里,即使我从未保存过上下文,这是怎么回事?
DataController.shared.deleteAllModifiersFromCD()
DataController.shared.printExercisesAndModifiersFromCD()
for mod in modSnap
let modifierType = mod.childSnapshot(forPath: "type").value as! String
let modifier = Modifier(context: self.DC.context)
modifier.id = mod.key
modifier.modType = modifierType
DataController.shared.printExercisesAndModifiersFromCD()
【问题讨论】:
【参考方案1】:当我终止应用程序并重新加载时,数据就在那里,即使我从未保存过上下文
这就是为什么,IIRC,当你保存上下文时,你实际上将更改保存在磁盘上,在此之前,一切都发生在内存上。
这就是保存上下文发生在AppDelegate.applicationWillTerminate
上的原因,它在终止应用程序之前执行。请注意,终止应用是在您从应用切换器向上滑动时,而不是在您从 Xcode 停止执行时。
【讨论】:
我有点困惑,你说的是,当你删除你的实体时,它们还保存吗?在调用 saveContext 之前?以上是关于不保存上下文的 CoreData 保存的主要内容,如果未能解决你的问题,请参考以下文章