我真的很挣扎。我正在尝试创建我的活动核心数据库的备份。根据Apple的说法,最好的选择是不使用文件管理器,而是使用migratePersistentStore方法。但我真的不明白这一点。我的AppDelegate中有我的PersistentStoreCoordinator。因此,如果我正在迁移持久性存储,那么我的协调器在成功正确移动后会丢失它吗?所以商店现在只是在新的位置而不是旧的位置?那么你有没有关于我的应用程序如何继续运行原始副本的示例程序代码?
或者我不能只使用具有相同前缀的filemanager复制所有文件而不是迁移?!这么容易......
答案 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];
此外,我不确定您的数据库打开时是否可以迁移,可能您需要锁定它或其他东西。