现在我正在使用coredata来保存我的数据。 它一切正常但现在我改变了逻辑以保存数据库的值。所以我需要比较后逻辑更改相同的值是否保存在表中。所以我需要比较表格。
所有链接都显示coredata创建的数据库文件是.sqlite扩展名。但是在那个位置创建的文件是" persistentStore,persistentStore-shm,persistentStore-wal"如屏幕截图所示。
我应该如何打开这些文件以查看表中保存的数据。 提前致谢
- (void)setupDatabase:(void (^)(BOOL))completionHandler
{
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"MainDataModel"];
self.db = [[CWUIManagedDocument alloc] initWithFileURL:url];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
self.db.persistentStoreOptions = options;
if(![[NSFileManager defaultManager] fileExistsAtPath:[self.db.fileURL path]])
{
[self.db saveToURL:self.db.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
self.dataManager.db = self.db;
completionHandler(success);
}];
} else if (self.db.documentState == UIDocumentStateClosed) {
[self.db openWithCompletionHandler:^(BOOL success) {
self.dataManager.db = self.db;
completionHandler(success);
}];
}
}
答案 0 :(得分:1)
您的sql文件是没有扩展名的文件。其他2个文件用于日记模式。
这已在this question中解释过。 Apple在iOS 7上将默认日记模式更改为WAL。
答案 1 :(得分:1)
在setupDatabase()
方法中,替换以下行
url = [url URLByAppendingPathComponent:@"MainDataModel"]
与
url = [url URLByAppendingPathComponent:@"MainDataModel.sqlite"]
您必须将持久性商店类型创建为Sqlite
答案 2 :(得分:1)
在终端上运行这些命令,然后在sqlite manager中打开persistentStore
。这些命令会将WAL文件合并到主sqlite文件
$ sqlite3 persistentStore
sqlite> PRAGMA wal_checkpoint;
Press control + d
以上链接的答案已涵盖这些步骤:https://stackoverflow.com/a/43406516/468724