保存核心数据?

Posted

技术标签:

【中文标题】保存核心数据?【英文标题】:Save Core Data? 【发布时间】:2013-08-26 22:35:35 【问题描述】:

我有一个主要面向数据库的功能性应用程序。我的客户目前正在使用该应用程序,它有很多预先存在的保存数据(注意:它都是本地的,没有保存在在线数据库中)。问题是,我知道当我更新我的数据模型时,我必须卸载,然后重新安装应用程序,否则它会由于数据模型的不一致而崩溃。有什么方法可以在更新数据模型的同时保存数据?

【问题讨论】:

mobile.tutsplus.com/tutorials/iphone/… 【参考方案1】:

我知道当我更新我的数据模型时,我必须卸载,然后重新安装应用程序,否则它会由于数据模型的不一致而崩溃。

不是这样,除非你只是懒得处理变化。 Core Data 支持将数据从数据模型的一个版本迁移到新版本,以便更新现有数据存储以使用新模型,而无需卸载或其他极端步骤。在大多数情况下,它甚至是自动的——你只需要告诉它来处理变化。具体来说,添加持久化存储时使用options参数:

NSDictionary *options = @NSMigratePersistentStoresAutomaticallyOption:@YES,
    NSInferMappingModelAutomaticallyOption:@YES;


if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) 
    ....

如果您的更改仅包含以下一项或多项,则此方法有效:

添加或删除属性 更改属性的“可选”标志(前提是如果您将其设为非可选,则提供默认值) 重命名实体或属性 添加、删除或重命名实体 添加父实体或子实体,或将属性移动到层次结构中的不同点 将关系从一对一更改为对多

如果要重命名任何内容,则需要设置重命名标识符,以便 Core Data 知道如何迁移。

如果这还不够,Core Data 以几种不同的方式支持非自动迁移。这在 Apple 的文档中有一些详细介绍,我不会在此处尝试复制。

【讨论】:

这正是我想要的。我不知道我可以自动迁移。谢谢。

以上是关于保存核心数据?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据检查是不是已经保存,Swift

核心数据保存错误

无法保存到核心数据中

无法保存核心数据

核心数据 MOC 保存暂停执行并且无法保存(无错误或崩溃)

只保存最后一项,同时快速保存核心数据[重复]