我想使用新的CoraData模型创建应用程序的新版本(由其他人创建)。 我的疑问是:核心数据模型通过更新是永久性的。我想确保以前的CoreData模型不会对新版本的App产生问题。
我是否应该遵循一些最佳做法?
答案 0 :(得分:1)
目前尚不清楚是否要保留旧的应用数据并进行迁移。
如果没有,那么在发布新模型时,当核心数据看到模型与旧模型不同时,您可以使用以下方法擦除商店: [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];
然后重新创建您的商店:
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error];
会通知您商店不匹配
/**
Returns the persistent store coordinator for the application.
If the coordinator doesn't already exist, it is created and the application's store added to it.
*/
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
方法,您通常会在appDelegate中找到它。
基本上你有两个选择:根据你的新模型创建一个新商店(旧数据会消失)或者将你的旧模型迁移到新模式(根据你要做的事情可能吗?)
如果应用程序根本不同,您可以考虑发布“新应用”而不是新版本。然后,您需要将用户重定向到新应用,就像旧应用中的消息一样。基本上,当您希望老用户“按原样”保留他们的应用程序时,因为它符合旧的iOS版本并使用全新的iOS功能,标准和用户界面发布全新的应用程序。