我在使用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()
答案 0 :(得分:0)
我杀死该应用并重新加载时,即使我从未保存过上下文,数据也在那里
这就是为什么IIRC在保存上下文时实际上是将更改持久保存在磁盘上的原因,在此之前,一切都发生在内存上。
这就是为什么保存上下文发生在AppDelegate.applicationWillTerminate
上的原因,它是在终止应用程序之前执行的。请注意,杀死应用程序是在从应用程序切换器向上滑动时,而不是从Xcode停止执行时。