Ios 通读我的应用程序';s核心数据文件(.sqlite、.sqlite-wal)

Ios 通读我的应用程序';s核心数据文件(.sqlite、.sqlite-wal),ios,objective-c,sqlite,core-data,Ios,Objective C,Sqlite,Core Data,我正在开发一款iOS应用程序,试图浏览由Core data编写的数据 在应用程序运行了一段时间后,我假设收集了一些数据,现在我希望查看数据,看看写了什么 我尝试通过从设备获取应用程序容器(Xcode>Devices>myApp>Download container…)来获取和浏览.sqlite文件 我得到了数据库文件,myAppDB.sqlite,myAppDB.sqlite shm和myAppDB.sqlite-wal 当试图查看它们时,似乎.sqlite是一个空表(除了一些通用的CoreDa

我正在开发一款iOS应用程序,试图浏览由Core data编写的数据

在应用程序运行了一段时间后,我假设收集了一些数据,现在我希望查看数据,看看写了什么

我尝试通过从设备获取应用程序容器(Xcode>Devices>myApp>Download container…)来获取和浏览
.sqlite
文件

我得到了数据库文件,
myAppDB.sqlite
myAppDB.sqlite shm
myAppDB.sqlite-wal

当试图查看它们时,似乎
.sqlite
是一个空表(除了一些通用的CoreData/sqlite内容),而
-wal
文件包含了所有信息

问题是,我只知道当用TextEdit打开时,
wal
有有用的数据,它不能以非常可读的方式显示,当我尝试使用SQLite Manager应用程序时,我收到一个警报,说
wal
是加密的,我被要求输入密码

重要的是,我正在编写一个处理db的框架(模型文件和用于编写数据的代码都在框架内),然后在我正在开发的应用程序中运行这个框架。这是我用于在框架内创建存储的代码(使用):

更新:我设法用和打开了
sqlite
文件,但它们都覆盖并删除了
.wal
文件的内容,并显示了一个空表。。。它有模型(实体名称/属性等),但没有数据

我的
wal
文件是873KB,但当我用这两个工具之一打开
sqlite
时,它变成了0字节

tl;dr


我如何浏览由我正在开发的应用程序的核心数据编写的信息?

嗯,出于某种原因,我不得不强制我的商店不使用沃尔玛(使用
@“日记”模式):@“删除”
,如前所述)

然后,我只得到了
.sqlite
文件,没有
smh
wal
文件,并且能够使用上述两个工具(Core data Editor和CoreDataUtility)打开它并查看数据

我的猜测是,这与我从一个框架(创建
moc
、创建实体、保存等)而不是从应用程序处理核心数据的事实有关。另一个猜测是,这与我正在使用的事实有关


如果您对原因有任何了解,我们将不胜感激……

我相信它是由您加密和签名的,以防止部署时出现隐私问题。@Schemetral是的,我假设是这样,但鉴于我从未对其进行过显式签名/加密,因此它是通过一些默认配置完成的,我不知道如何解密。。。这就是我需要帮助的地方…两个文件都没有加密。只要您没有断开
.sqlite
文件和
-wal
文件之间的连接,如果您使用sqlite管理器打开
.sqlite
文件,所有数据都应该是可见的(即使没有密码)。当我打开
sqlite
文件时,
wal
将被删除,请参见我问题中的
更新
。“没有断开连接”是什么意思?我个人使用SQLite。使用MagicalRecord,如果我调用其中一种方法将数据持久化到磁盘,例如
MR_saveToPersistentStoreWithCompletion
,那么数据将从WAL刷新到实际的SQLite文件。有关提前写入日志文件的更多信息,请参阅
NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
[MagicalRecord setDefaultModelNamed:@"myAppStore.momd" inBundle:frameworkBundle];

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"myAppStoreDB.sqlite"];
[MagicalRecord setupCoreDataStackWithStoreAtURL:storeURL];