【问题标题】:How to prevent core data issues in new versions如何防止新版本出现核心数据问题
【发布时间】:2014-10-06 07:07:31
【问题描述】:

忘记了 进行核心数据迁移

在提交我的应用程序的新版本之前。安装旧版本并更新到新版本后,应用程序在启动时每次都会崩溃。

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

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

【问题讨论】:

    标签: ios iphone xcode core-data app-store


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

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

      • 假设用户使用的是 1.0 版
      • Buggy 1.1 版
      • 现在您发布了一个不错的 1.2 版。

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

      最坏的情况: 我不知道你在core data里面有什么样的数据,但是如果它是可重构的,你可以把旧数据删掉,然后新建一个。

      【讨论】:

      • 我只为其中一个实体添加了一个新属性。但我的问题是:有没有我可以在不重新提交应用程序的情况下解决这个问题?
      • 有没有我可以在不重新提交应用程序的情况下解决这个问题? :-/ :-|
      • 不,你不能,你提交了一个错误的版本,你必须提交一个新的版本来解决这个问题。
      • 就像 jcesarmobile 所说的,很遗憾你必须提交一个新版本
      猜你喜欢
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-16
      • 1970-01-01
      相关资源
      最近更新 更多