Ios 通读我的应用程序';s核心数据文件(.sqlite、.sqlite-wal)
我正在开发一款iOS应用程序,试图浏览由Core data编写的数据 在应用程序运行了一段时间后,我假设收集了一些数据,现在我希望查看数据,看看写了什么 我尝试通过从设备获取应用程序容器(Xcode>Devices>myApp>Download container…)来获取和浏览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
.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];