Ios 如何在没有命令行的情况下以编程方式转储SQLite
在我的应用程序中,我想识别数据库何时损坏并自动修复它。具体来说,当应用程序第一次打开时,我运行ANALYZE命令,如果它返回状态11(数据库磁盘映像格式不正确),那么我希望有一种恢复数据的方法 我找到的所有示例都使用终端进行转储,然后导入后续的SQL命令文件 既然命令行在iOS上不可用,我如何从自己的代码中转储dbIos 如何在没有命令行的情况下以编程方式转储SQLite,ios,swift,sqlite,Ios,Swift,Sqlite,在我的应用程序中,我想识别数据库何时损坏并自动修复它。具体来说,当应用程序第一次打开时,我运行ANALYZE命令,如果它返回状态11(数据库磁盘映像格式不正确),那么我希望有一种恢复数据的方法 我找到的所有示例都使用终端进行转储,然后导入后续的SQL命令文件 既然命令行在iOS上不可用,我如何从自己的代码中转储db 谢谢我认为您可以轻松地用另一个名称(扩展时间戳)复制和保存数据库。你必须弄清楚它什么时候会损坏(它不应该损坏,这取决于你对损坏的理解),然后更换它 NSFileManager *fi
谢谢我认为您可以轻松地用另一个名称(扩展时间戳)复制和保存数据库。你必须弄清楚它什么时候会损坏(它不应该损坏,这取决于你对损坏的理解),然后更换它
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *sqlpath = [documentsDirectory stringByAppendingPathComponent:@"Your-sqlitefile"];
NSString *sqldump = //append timestamp
[fileManager copyItemAtPath:sqlpath toPath:sqldump error:&error];
编辑:
请参考下面的答案。我自己没有用过,但希望能有所帮助。
转储
.dump
通常不起作用;它只输出所有碰巧可读的内容。