gpt4 book ai didi

ios - 如何告诉 Xcode 将 CoreData 输出刷新到 Sqlite

转载 作者:行者123 更新时间:2023-11-28 23:42:38 24 4
gpt4 key购买 nike

我在 Xcode 10 中使用 CoreData。CoreData 的后备数据存储是 Sqlite。我正在开发一个将部署到 iOS 的 Swift 应用程序;不知道这是否相关。

在运行应用程序后,有没有办法告诉 Xcode(或者我猜是 Simulator)将任何输出刷新到磁盘上的 Sqlite 文件? Sqlite 输出似乎只有在关闭 Xcode 和/或 Simulator 时才会刷新,这有点笨拙。

最佳答案

托管对象上下文应在其数据更改后立即显式保存。这是您应该在代码中执行的操作,而不是 Xcode 或 Simulator 的功能。实现并调用保存相关托管对象上下文的函数。不要等到您的应用程序终止。

func save() {
do {
try self.managedObjectContext.save()
}
catch {
let nserror = error as NSError
NSLog("Whoops! \(nserror), \(nserror.userInfo)")
}
}

但是,如果您使用父上下文和子上下文,事情会稍微复杂一些。 Apple's documentation很好地解释了这一点:

当您在上下文中保存更改时,这些更改仅“一次存储”提交。如果保存子上下文,更改将推送到其父上下文。在保 stub 上下文之前,更改不会保存到持久存储中。 (根托管对象上下文是父上下文为零的上下文。)此外,父对象在保存之前不会从子对象中提取更改。如果您想最终提交更改,则必须保存子上下文。

对于 SQLite 存储,它们引用的持久存储是磁盘上的 SQLite 文件。 (默认情况下,磁盘上有三个SQLite文件:主文件、-shm文件和-wal文件)。

关于ios - 如何告诉 Xcode 将 CoreData 输出刷新到 Sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53106152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com