Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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 DB_Ios_Sqlite_Core Data_Backup - Fatal编程技术网

在iOS上备份sqlite DB

在iOS上备份sqlite DB,ios,sqlite,core-data,backup,Ios,Sqlite,Core Data,Backup,我想在应用程序运行时备份应用程序的主sqlite DB 1) 我已经读到,如果DB被检查过(此时wal文件不包含重要数据),那么只复制sqlite文件是安全的。[managedContext save:]是否执行该检查点设置,或者我是否还必须执行其他操作?(参考) 2) 除了拆下整个核心数据堆栈,还有什么方法可以确保在复制sqlite文件时,核心数据不会试图写入sqlite文件?我的应用程序在任何用户输入后都会频繁保存,如果有什么方法可以强制阻止它一秒钟,那就太好了。2) 当我进行备份时,我会关

我想在应用程序运行时备份应用程序的主sqlite DB

1) 我已经读到,如果DB被检查过(此时wal文件不包含重要数据),那么只复制sqlite文件是安全的。[managedContext save:]是否执行该检查点设置,或者我是否还必须执行其他操作?(参考)

2) 除了拆下整个核心数据堆栈,还有什么方法可以确保在复制sqlite文件时,核心数据不会试图写入sqlite文件?我的应用程序在任何用户输入后都会频繁保存,如果有什么方法可以强制阻止它一秒钟,那就太好了。

2) 当我进行备份时,我会关闭所有mom、moc和持久存储。然后进行备份或恢复是安全的。此外,所有视图都在等待事件释放所有coredata资源,并在数据库再次可用时将其恢复。最好有一个单例来管理coredata。

2)
当我进行备份时,我会关闭所有mom、moc和持久存储。然后进行备份或恢复是安全的。此外,所有视图都在等待事件释放所有coredata资源,并在数据库再次可用时将其恢复。有一个单独的应用程序来管理coredata很好。

我上传了一个示例应用程序,它提供了多种不同的备份和恢复功能,包括本地备份、向iCloud复制备份和从iCloud复制备份、电子邮件备份、从电子邮件导入以及通过iTunes复制文件。有关演示这些功能的视频,请参见下面的链接,您可以从该网站下载示例应用程序

编辑


使用相同的文件URL创建一个新的persistentStoreCoordinator,然后在不关闭应用程序的情况下使用
migratePersistentStore
API应该是安全的,但首先保存主MOC。我总是使用JOURNAL=DELETE模式来确保我只需要使用一个文件来处理。如果您使用的是WAL模式,那么您需要备份sqlite使用的所有三个文件。

我上传了一个示例应用程序,该应用程序以多种不同的方式提供备份和还原功能,包括本地备份、iCloud的备份和从iCloud复制备份、电子邮件备份、从电子邮件导入以及通过iTunes复制文件。有关演示这些功能的视频,请参见下面的链接,您可以从该网站下载示例应用程序

编辑


使用相同的文件URL创建一个新的persistentStoreCoordinator,然后在不关闭应用程序的情况下使用
migratePersistentStore
API应该是安全的,但首先保存主MOC。我总是使用JOURNAL=DELETE模式来确保我只需要使用一个文件来处理。如果您使用的是WAL模式,那么您需要备份sqlite使用的所有三个文件。

当您使用它时,您就不能实现复制吗?我也可以用它。:-)显然,sqlite C库中有类似于实时备份API的东西:有人将其用于核心数据吗?实际上,我想我可以在我的singleton DB处理程序中围绕-save:和-backup:调用包装@synchronized指令。如果我理解正确的话,在复制sqlite文件时,这应该可以为我节省几分之一秒的阻塞时间,而不必过多地处理已经调试过的代码。在这样做的时候,你就不能实现复制吗?我也可以用它。:-)显然,sqlite C库中有类似于实时备份API的东西:有人将其用于核心数据吗?实际上,我想我可以在我的singleton DB处理程序中围绕-save:和-backup:调用包装@synchronized指令。如果我理解正确的话,在复制sqlite文件时,这应该可以为我节省几分之一秒的阻塞时间,而不必过多地处理已经调试过的代码。我一开始就把设计做对了一半,所以我认为如果需要的话,我可以做到这一点,但我希望有一个更简单的方法。我一开始就把我的设计做对了一半,所以我想如果我需要的话我可以做到,但我希望有一个更简单的方法。