我打算创建一个使用CoreData的iphone应用程序。稍后可能会添加增强功能作为应用的新版本。 我的问题是; 使用CoreData时,要记住哪些因素要确保用户是否升级版本,他之前的数据是否完好无损?就像我听说我们应该保持.site文件名相同。在发布Core Data应用程序时要记住哪些其他因素?
谢谢。
答案 0 :(得分:2)
数据迁移概念对于了解您是否会随着时间推移而进行维护非常重要,因为您可能最终想要更改某些内容。
理想情况是 Lightweight Migration ,其中从旧数据模型到新数据模型的轻微转换是自动的。如文档中所述,如果您的更改是:
,它可以自行处理
- 简单添加新属性
- 非可选属性变为可选
- 可选属性变为非可选属性并定义默认值
重命名实体或属性也很容易且几乎是自动的。
除此之外的一切 - 新的或删除的实体,新的或删除或改变的关系 - 都是更加毛茸茸的。这并不难,但它绝对是更多的工作,有更多的失败空间。
因此,对可能的潜在变化进行一些猜测可能会提前提供一点摆动空间变得更容易和更有效。显然,如果你做得太多,特别是理论上但当前未使用过的关系,你可能会放慢当前系统的速度,并且可能无缘无故。
值得考虑。
答案 1 :(得分:1)
我们做的一件事是管理两个独立的核心数据库。 首先,提供应用程序更新的“只读”核心数据数据库(假设您希望通过应用程序发送数据,如果没有,则不要打扰此部分)。 其次,存储在手机上的本地核心数据数据库(数据存储)最初填充了来自第一个的数据,然后由用户添加或由您控制的服务器更新。第二个核心数据存储可以在更新之间保持持久性。
对于以后的修改和更新,您有两个选择。只要您不需要与旧数据同时获取新数据,就可以在新的核心数据存储中添加其他功能。另一个选择是使用Apple的核心数据迁移内容,您可以阅读更多有关here的内容。
Here也是一些用于加强核心数据的额外资源,SO上有许多更具体的核心数据示例。
最后,如果您计划大幅添加/修改核心数据存储,我建议您查看SQLite。使用更新(根据我的经验)更容易将现有核心数据存储迁移到新架构,尤其是在架构经常更改的情况下。