如何在没有命令行

时间:2016-02-20 12:41:01

标签: ios swift sqlite

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

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

如何从我自己的代码中转储数据库,因为iOS上没有命令行?

由于

1 个答案:

答案 0 :(得分:1)

我认为您可以使用其他名称(扩展时间戳)轻松复制和保存数据库。你必须弄清楚什么时候它是有害的(它不应该损坏它取决于你的损坏的意义)并替换它。

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];

修改

请参考以下答案。我没有亲自使用,但希望它有所帮助。 https://stackoverflow.com/a/27453637/1881472