首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >核心数据迁移和数据库文件传送

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

Stack Overflow用户
提问于 2015-04-13 11:06:47
回答 1查看 61关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-04-14 08:24:33

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

代码语言:javascript
运行
复制
  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];  
  }

  //...

重要的是要记住,应用程序更新并不是均匀地分布在用户之间,所以你绝对不能假设每个人都执行了所有相关的迁移。你被困在维护一系列增量步骤上。例如,即使您在1.3、1.2和1.1之后使用1.4,您可能仍然有使用1.0的用户,依此类推,因此您不能放弃任何中间步骤。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29597285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档