我 忘了 进行核心数据迁移
在提交我的应用程序的新版本之前。安装旧版本并更新到新版本时,启动时,应用程序会崩溃。
删除新版本并重新安装应用时,一切正常。我们正在App Store上讨论prod版本。
你能告诉我如何解决这个问题吗?
答案 0 :(得分:1)
您可以提交执行数据迁移的版本。
如果用户从1.0更新 - > 1.2它应该工作。 如果用户已经更新到1.1(确实崩溃),那么应用程序无法更改数据,因此如果他们从1.1更新了应该没问题 - > 1.2(但无论如何,如果我是对的,请尝试自己)
最坏情况: 我不知道你在核心数据中有什么样的数据,但如果它是可重构的,你可以删除旧数据并创建一个新数据。
答案 1 :(得分:1)
您必须进行轻量级迁移: -
制作两个版本的Datamodel [安全]
这样的事情: -
+ (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
if ([DBHelper sharedCoreDataInstance].objPersistentStoreCoordinator != nil) {
return [DBHelper sharedCoreDataInstance].objPersistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationLibraryDirectory] URLByAppendingPathComponent:@"yourdb.sqlite"];
NSError *error = nil;
NSDictionary *options = @{
NSMigratePersistentStoresAutomaticallyOption : @YES,
NSInferMappingModelAutomaticallyOption : @YES
};
[DBHelper sharedCoreDataInstance].objPersistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc]
initWithManagedObjectModel:[self managedObjectModel]];
if(![[DBHelper sharedCoreDataInstance].objPersistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:options
error:&error])
{
//Error for store creation should be handled in here
}
return [DBHelper sharedCoreDataInstance].objPersistentStoreCoordinator;
}