使用CoreData备份到物理文件

时间:2016-11-16 07:18:09

标签: swift macos core-data backup

我将在一个macOS应用程序中使用CoreData,以便操作每秒更改的大约100 MB,大小不应该有意义地增加。 CoreData的关系本质正是我所需要的。 我必须非常小心,以免丢失任何数据,所以我想创建一些我可以存储为备份的物理文件。 CoreData是否已经有一个帮助函数来完成这个或者我自己编写它?

1 个答案:

答案 0 :(得分:1)

最近的内置选项是NSPersistentStoreCoordinator方法migratePersistentStore:toURL:options:withType:error:。它需要一个现有的持久存储并将其保存在新位置。 (请注意,此方法与迁移到较新版本的数据模型无关)。但是,当此方法完成时,旧的持久性存储将从持久性存储协调器中删除,除非您重新添加它,否则无法使用它。

另一种选择是更改日记帐模式。最近的操作系统版本使用了预写日志记录,但仍支持较旧的“删除”模式。在这种情况下,您可以使用NSFileManager方法简单地复制持久性存储文件。这在Apple的Technical Q&A QA1809中有所描述。如果您这样做并且使用Core Data的外部二进制支持,则需要查找并复制用于二进制blob的目录。