【问题标题】:iPhone - core data migrationiPhone——核心数据迁移
【发布时间】:2011-09-14 23:15:18
【问题描述】:

我有一个至少有 300 个条目的应用。每个条目代表一个可以免费或应用内购买的对象。该应用程序正在销售中,并在捆绑包中附带一个预填充的 sqlite 文件。当应用程序第一次运行时,它会检查数据库是否存在。如果不是,它会将 sqlite 文件从包复制到应用程序的目录,然后魔法开始。

随着时间的推移,用户购买了一些应用内对象,数据库会更改以标记已购买的条目。

现在我即将发布一个新版本。这个新版本附带了另一个代表对象的 sqlite 文件。结构相同,但代表新数据库的新 sqlite 文件现在有更多对象。

我已阅读文档,但没有找到符合我需要做的示例,所以我问你们。我应该遵循哪些步骤?我需要用新的数据库(版本 2)替换用户拥有的当前数据库(版本 1),但是当我这样做时,我需要版本 2 来进行版本 1 的所有更改,因为它已安装(换句话说,复制包含购买信息的实体属性。

我该怎么做?这是版本控制吗?移民?

谢谢。

【问题讨论】:

  • 你是用核心数据设计/填充数据库版本还是直接用sqllite玩?
  • 我使用了核心数据。我在源代码上有一个“构建数据库”模式,它读取一个 txt 文件并为我创建数据库文件。然后我获取 sqlite 文件并放入捆绑包,禁用此模式。

标签: iphone core-data


【解决方案1】:

如果两个数据存储的结构没有改变(托管对象模型相同),则不是版本控制/迁移。我想说最简单的做法是检查数据库中是否存在新对象,如果不存在则添加它们。

另一种选择是同时使用两个 sqlite 存储和mergedModelFromBundles。我对此了解不多,这可能比在代码中创建新对象并添加它们更麻烦。

【讨论】:

  • 我的问题是创建对象是一个相对缓慢的过程......但我认为你的第一个建议是最好的方法。谢谢。
猜你喜欢
  • 2010-12-24
  • 1970-01-01
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-07-22
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多