我将在一个macOS应用程序中使用CoreData来操作每秒变化的大约100mb,大小不应该显著增加。
CoreData的关系本质正是我所需要的。
我必须非常小心,以免丢失任何数据,所以我想创建一些物理文件,我可以存储为备份。
CoreData是否已经有一个helper函数来完成这个任务,或者我必须自己编写它?
最佳答案
最接近的内置选项是NSPersistentStoreCoordinator
方法migratePersistentStore:toURL:options:withType:error:
。它需要一个现有的持久存储并将其保存在一个新的位置。(请注意,此方法与迁移到数据模型的较新版本无关)。但是,当此方法完成时,旧的持久性存储将从持久性存储协调器中删除,除非重新添加,否则无法使用。
另一个选择是更改日志模式。最近的操作系统版本使用了预写日志记录,但仍然支持旧的“删除”模式。在这种情况下,您可以使用NSFileManager
方法简单地复制持久存储文件。这在苹果的Technical Q&A QA1809中有描述。如果这样做并且使用核心数据的外部二进制支持,则需要找到并复制用于二进制blob的目录。