Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在没有命令行的情况下以编程方式转储SQLite_Ios_Swift_Sqlite - Fatal编程技术网

Ios 如何在没有命令行的情况下以编程方式转储SQLite

Ios 如何在没有命令行的情况下以编程方式转储SQLite,ios,swift,sqlite,Ios,Swift,Sqlite,在我的应用程序中,我想识别数据库何时损坏并自动修复它。具体来说,当应用程序第一次打开时,我运行ANALYZE命令,如果它返回状态11(数据库磁盘映像格式不正确),那么我希望有一种恢复数据的方法 我找到的所有示例都使用终端进行转储,然后导入后续的SQL命令文件 既然命令行在iOS上不可用,我如何从自己的代码中转储db 谢谢我认为您可以轻松地用另一个名称(扩展时间戳)复制和保存数据库。你必须弄清楚它什么时候会损坏(它不应该损坏,这取决于你对损坏的理解),然后更换它 NSFileManager *fi

在我的应用程序中,我想识别数据库何时损坏并自动修复它。具体来说,当应用程序第一次打开时,我运行ANALYZE命令,如果它返回状态11(数据库磁盘映像格式不正确),那么我希望有一种恢复数据的方法

我找到的所有示例都使用终端进行转储,然后导入后续的SQL命令文件

既然命令行在iOS上不可用,我如何从自己的代码中转储db


谢谢

我认为您可以轻松地用另一个名称(扩展时间戳)复制和保存数据库。你必须弄清楚它什么时候会损坏(它不应该损坏,这取决于你对损坏的理解),然后更换它

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
通常不起作用;它只输出所有碰巧可读的内容。