繁体   English   中英

如何在CoreData SQLite数据库中强制更新?

[英]How can I force update in a CoreData SQLite database?

我有一个应用程序,并且使用CoreData来存储数据。 一切正常,但是我想轻松地访问我的数据,以进行验证。 因此,我想到了尝试与iTunes(UIFileSharingEnabled)共享数据的想法。 现在,我可以在iTunes中查看数据库,可以在Mac上复制.sqlite文件,并且可以使用sqlite3验证数据。

一切都很好,但是我想测试其他东西,所以我在应用程序中修改了一些数据,但是我无法访问修改后的数据。 .sqlite数据库始终存在几天。 我在iTunes共享中还有另外两个文件(.sqlite-shm和.sqlite-wal),它们已被修改(当我修改数据时,日期会更改),但是我无法“更新” .sqlite文件。

我尝试在iPhone上强制退出该应用程序,重新构建该应用程序,创建新数据而不是修改数据,但是没有运气。

我的应用程序中的数据是正确的,因此我假设修改存储在其他两个文件中,但是有人知道我可以尝试强制更新.sqlite文件吗?

存在其他文件,因为商店使用SQLite日记类型。 您只需在初始化sqlite3工具时使用该类型。

理想情况下,您只应使用应用程序代码来查询数据存储,而不要使用sqlite3,因为表结构应视为私有的。

根据Technical Q&A1809 ,强制SQLite将-wal文件合并到主.SQLite文件中的方法是使用“回滚日志记录模式”将存储添加到持久存储协调器中:

对于以WAL模式加载的商店,如果主商店文件和对应的-wal文件都存在,则使用回滚日志记录模式将商店添加到持久性商店协调器中将强制Core Data执行检查点操作,该操作将合并-wal文件中的数据到存储文件。 这实际上是执行检查点操作的核心数据方式。

技术说明包括实现此目的的示例代码(尽管目标C)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM