在我的应用中,我想知道数据库何时被损坏并自动修复它。具体来说,当第一次打开应用程序时,我运行一个ANALYZE命令,如果它返回状态11(数据库磁盘映像格式错误),那么我想有一种恢复数据的方法。
我找到的所有示例都使用终端进行转储,然后导入后续的SQL命令文件。
如何从我自己的代码中转储数据库,因为iOS上没有命令行?
由于
答案 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