不保存上下文的 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 保存的主要内容,如果未能解决你的问题,请参考以下文章

CoreData:将数据保存到上下文

保存 CoreData 上下文和绑定问题

Core Data 后台处理,保存不推送到主上下文

核心数据上下文不保存

解决RestKit中的CoreData合并冲突,当一个上下文正在保存对象更新而另一个正在删除对象时

在子上下文中保存核心数据不起作用