我正在尝试在我正在开发的iOS应用中浏览Core Data编写的数据。
应用程序运行一段时间后,我假设收集了一些数据,我现在希望查看数据,看看写了什么。
我尝试通过从设备获取应用容器来获取和浏览.sqlite
文件( Xcode> Devices> myApp> Download Container ... )。
我收到了db文件,myAppDB.sqlite
,myAppDB.sqlite-shm
和myAppDB.sqlite-wal
。
当试图浏览它们时,似乎.sqlite
是一个空表(除了一些通用的CoreData / sqlite东西),-wal
文件包含所有信息。
事情是我只能知道wal
在使用TextEdit打开它时有用的数据,它以一种非常易读的方式显示它,当我尝试使用SQLite时经理应用我警告说wal
已加密,我被要求输入密码......
对于它的重要性,我正在编写一个处理db的框架(模型文件和用于编写数据的代码在框架内),然后我在我正在开发的应用程序中运行此框架。这是我用来在框架内创建商店的代码(使用MagicalRecord):
NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]];
[MagicalRecord setDefaultModelNamed:@"myAppStore.momd" inBundle:frameworkBundle];
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"myAppStoreDB.sqlite"];
[MagicalRecord setupCoreDataStackWithStoreAtURL:storeURL];
更新:我设法同时使用Core-Data-Editor和CoreDataUtility打开sqlite
文件,但它们都覆盖并删除.wal
的内容文件,并显示一个空表...它确实有模型(实体名称/属性等),但没有数据。
我的wal
文件是873KB但是当我使用这两个工具之一打开sqlite
时,它变为0Bytes ......
TL;博士
如何浏览我正在开发的应用程序的Core Data所写的信息?
答案 0 :(得分:1)
好吧,出于某种原因,我不得不强迫我的商店不使用WAL(使用@"journal_mode":@"DELETE"
解释here)。
然后,我只获得.sqlite
个文件而没有smh
和wal
个文件,并且能够使用上述2个工具打开它并查看数据(Core-Data-Editor和CoreDataUtility)。
我的猜测是,这与我从框架处理CoreData(创建moc
,创建实体,保存等)这一事实有关,而不是来自应用程序。另一个猜测是,它与我使用MagicalRecord的事实有关。
任何有关原因的见解都将受到赞赏......