首页 文章

如何打开CoreData数据库文件以查看已保存的值

提问于
浏览
0

现在我正在使用coredata来保存我的数据 . 它一切正常但现在我改变了逻辑以保存数据库的值 . 所以我需要比较后逻辑更改相同的值是否保存在表中 . 所以我需要比较表格 .

我经历了许多链接,如link 1 link 2

所有链接都显示coredata创建的数据库文件是.sqlite扩展名 . 但是在该位置创建的文件是“persistentStore,persistentStore-shm,persistentStore-wal”,如屏幕截图所示 .

Image of database file

我应该如何打开这些文件以查看表中保存的数据 . 提前致谢

- (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);
        }];
    }
}

3 回答

  • 1

    你的sql文件是没有扩展名的文件 . 其他2个文件用于日记模式 .

    这已在this question中解释过了 . Apple在iOS 7上将默认日记模式更改为WAL .

  • 1

    setupDatabase() 方法中替换以下行

    url = [url URLByAppendingPathComponent:@"MainDataModel"]
    

    url = [url URLByAppendingPathComponent:@"MainDataModel.sqlite"]
    

    您必须创建持久性存储类型为 Sqlite

  • 1

    在终端上运行这些命令,然后在sqlite管理器中打开 persistentStore . 这些命令会将WAL文件合并到主sqlite文件中

    $ sqlite3 persistentStore
    sqlite> PRAGMA wal_checkpoint;
    
    Press control + d
    

    以上链接的答案已涵盖这些步骤:https://stackoverflow.com/a/43406516/468724

相关问题