核心数据:如何正确使用迁移持久存储来创建备份副本

时间:2014-09-12 20:56:52

标签: ios objective-c c core-data

我真的很挣扎。我正在尝试创建我的活动核心数据库的备份。根据Apple的说法,最好的选择是不使用文件管理器,而是使用migratePersistentStore方法。但我真的不明白这一点。我的AppDelegate中有我的PersistentStoreCoordinator。因此,如果我正在迁移持久性存储,那么我的协调器在成功正确移动后会丢失它吗?所以商店现在只是在新的位置而不是旧的位置?那么你有没有关于我的应用程序如何继续运行原始副本的示例程序代码?

或者我不能只使用具有相同前缀的filemanager复制所有文件而不是迁移?!这么容易......

1 个答案:

答案 0 :(得分:1)

您可以创建单独的NSPersistentStoreCoordinator以进行迁移,并继续使用常规的CoreData堆栈。您也可以使用NSMigrationManager进行迁移:

NSMigrationManager* manager = [[NSMigrationManager alloc] initWithSourceModel:sourceModel
                                                             destinationModel:targetModel];

BOOL migratedSuccessfully = [manager migrateStoreFromURL:sourceStoreURL
                                                    type:type
                                                 options:nil
                                        withMappingModel:mappingModel
                                        toDestinationURL:destinationStoreURL
                                         destinationType:type
                                      destinationOptions:nil
                                                   error:error];

此外,我不确定您的数据库打开时是否可以迁移,可能您需要锁定它或其他东西。