我忘记 在提交我的app.When的新版本之前做核心数据迁移如何防止在新版本
核心数据发布具有安装旧版本,并更新新版本发布后,该应用每次都会崩溃。
删除新版本并重新安装应用程序时,一切正常。我们正在App Store上讨论prod版本。
请问您能告诉我如何解决这个问题吗?
我忘记 在提交我的app.When的新版本之前做核心数据迁移如何防止在新版本
核心数据发布具有安装旧版本,并更新新版本发布后,该应用每次都会崩溃。
删除新版本并重新安装应用程序时,一切正常。我们正在App Store上讨论prod版本。
请问您能告诉我如何解决这个问题吗?
你,你所要做的轻量级迁移: -
使数据模型两个版本[安全]
财产以后这样的: -
+ (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;
}
您可以提交进行数据迁移的版本。
如果用户从1.0 - > 1.2更新它应该工作。 如果用户已经更新到1.1(确实崩溃),该应用程序无法更改数据,所以它应该可以,如果他们从1.1 - > 1.2更新(但是无论如何请尝试自己,如果我是对的)
最坏情况: 我不知道核心数据中有什么样的数据,但是如果它是可重构的,您可以删除旧数据并创建一个新数据。
我只添加了一个新的属性之一实体。但我的问题是:无论如何,我可以解决这个问题,而无需重新提交应用程序? – Raon 2014-10-06 07:23:56
无论如何,我可以解决这个问题,而无需重新提交应用程序? : - /: - | – Raon 2014-10-06 07:30:40
不,你不能,你提交了一个不好的版本,你必须提交一个修复问题的新版本。 – jcesarmobile 2014-10-06 07:36:28