删除iOS应用更新中的核心数据模型

时间:2016-04-22 09:58:05

标签: ios database sqlite core-data core-data-migration

我的问题与移民有关。我不能进行轻量级迁移,因为属性类型和新关系有很多变化。我没有时间进行重量级迁移,因为代码不是我的,需要更快的交付。

可行的解决方法是,当应用程序升级时,应用程序应删除旧数据和数据模型,因为数据没有用,可以再次从服务器下载。在应用程序确实完成启动,获取.db URL并删除它并在升级后第一次重新创建它?

经过一番研究,所有方法都指向轻量化迁移。如果有更好的方法请帮助。

2 个答案:

答案 0 :(得分:1)

-(void) removeCoreDataAndReset{

      NSError *error;
      NSPersistentStoreCoordinator *storeCoordinator = storeCordinator;
     for (NSPersistentStore *store in storeCoordinator.persistentStores) {
          [storeCoordinator removePersistentStore:store error:&error];
          [[NSFileManager defaultManager] removeItemAtPath:store.URL.path error:&error];
     }
  // Initialise managedobjectcontext , Store Coordinator etc
} 

像在statrt

中一样,在此方法之后重新初始化所有

答案 1 :(得分:1)

要删除持久性商店,您需要删除:

  1. 实际的持久存储文件。它位于您放置的任何位置。当你拨打addPersistentStoreWithType:configuration:URL:options:error:时,你告诉核心数据它在哪里,所以如果你不确定,请检查那里。

  2. 日记文件。它们与持久性存储文件具有相同的名称,但最后添加了-wal-shm这非常重要,因为在大多数情况下,几乎所有现有数据都在这些文件中。

  3. 您可以使用NSFileManager上的方法删除文件。如果您这样做,请在以任何方式访问Core Data之前,即在创建任何类型的任何Core Data对象之前执行此操作。