Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心数据迁移和传送数据库文件_Ios_Core Data_App Store_Migration_Shipping - Fatal编程技术网

Ios 核心数据迁移和传送数据库文件

Ios 核心数据迁移和传送数据库文件,ios,core-data,app-store,migration,shipping,Ios,Core Data,App Store,Migration,Shipping,目前,我已将一个应用程序发送到应用程序商店。我希望将填充的数据库包含到下一个版本中(我将把.sqlite文件复制到主捆绑包中),但根据位置的不同,需要加载一些数据。下一版本的数据模型有重大更改。此外,下一个版本还将对数据模型进行更改。我该怎么办 如果我发货DB,是否需要考虑迁移?如果我检查DB文件是否存在,如果不存在,则从主捆绑包中复制它-这不会影响当前用户,但如果我不检查-它将在用户每次启动应用程序时被替换。我还不清楚如何处理下一个版本。我假设我需要在不同版本之间保持附带的DB名称相同,但这会

目前,我已将一个应用程序发送到应用程序商店。我希望将填充的数据库包含到下一个版本中(我将把.sqlite文件复制到主捆绑包中),但根据位置的不同,需要加载一些数据。下一版本的数据模型有重大更改。此外,下一个版本还将对数据模型进行更改。我该怎么办


如果我发货DB,是否需要考虑迁移?如果我检查DB文件是否存在,如果不存在,则从主捆绑包中复制它-这不会影响当前用户,但如果我不检查-它将在用户每次启动应用程序时被替换。我还不清楚如何处理下一个版本。我假设我需要在不同版本之间保持附带的DB名称相同,但这会导致更新时数据丢失

这是一个典型的挑战性问题。我们在iOS上所做的是将数据库的迁移版本号存储在某个地方,可能是在NSUserDefaults中,然后逐步执行一系列
if
语句,检查部署的版本号是否小于所需的版本号。如果触发了
If
语句,则会发生与该版本升级对应的迁移,然后版本号本身会递增

  double version = [self getDatabaseMigrationVersion];

  if(version < 1.1)
  {
    //1.0 -> 1.1 SQL migration
    version = 1.1;
    [self setDatabaseMigrationVersion:version];  
  }

  if(version < 1.2)
  {
    //1.1 -> 1.2 SQL migration
    version = 1.2;
    [self setDatabaseMigrationVersion:version];  
  }

  //...
double version=[self-getDatabaseMigrationVersion];
如果(版本<1.1)
{
//1.0->1.1 SQL迁移
版本=1.1;
[self-setDatabaseMigrationVersion:version];
}
如果(版本<1.2)
{
//1.1->1.2 SQL迁移
版本=1.2;
[self-setDatabaseMigrationVersion:version];
}
//...
重要的是要记住,应用程序更新并不是在用户之间均匀分布的,因此您绝对不能假设每个人都执行了所有相关的迁移。您无法维持一系列增量步骤。例如,即使在1.3、1.2和1.1之后处于1.4,也可能仍有用户处于1.0,以此类推,因此不能放弃任何中间步骤

显然,有一些库可以帮助管理iOS上的SQLite迁移。我没有链接到它们,因为我没有审阅它们。我怀疑它们不仅仅是我上面提到的过程的简单包装