2014-10-06 53 views
0

忘记 在提交我的app.When的新版本之前做核心数据迁移如何防止在新版本

核心数据发布具有安装旧版本,并更新新版本发布后,该应用每次都会崩溃。

删除新版本并重新安装应用程序时,一切正常。我们正在App Store上讨论prod版本。

请问您能告诉我如何解决这个问题吗?

回答

1

你,你所要做的轻量级迁移: -

使数据模型两个版本[安全]

财产以后这样的: -

+ (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

您可以提交进行数据迁移的版本。

  • 比方说用户有1.0
  • 巴吉版本1.1
  • 现在你发布一个好的版本1.2。

如果用户从1.0 - > 1.2更新它应该工作。 如果用户已经更新到1.1(确实崩溃),该应用程序无法更改数据,所以它应该可以,如果他们从1.1 - > 1.2更新(但是无论如何请尝试自己,如果我是对的)

最坏情况: 我不知道核心数据中有什么样的数据,但是如果它是可重构的,您可以删除旧数据并创建一个新数据。

+0

我只添加了一个新的属性之一实体。但我的问题是:无论如何,我可以解决这个问题,而无需重新提交应用程序? – Raon 2014-10-06 07:23:56

+0

无论如何,我可以解决这个问题,而无需重新提交应用程序? : - /: - | – Raon 2014-10-06 07:30:40

+0

不,你不能,你提交了一个不好的版本,你必须提交一个修复问题的新版本。 – jcesarmobile 2014-10-06 07:36:28