ios coredata 会在新版本中更改实体属性导致崩溃

Posted

技术标签:

【中文标题】ios coredata 会在新版本中更改实体属性导致崩溃【英文标题】:ios coredata would entity attribute change in new version results in crash 【发布时间】:2015-04-26 11:20:32 【问题描述】:

我在我的应用程序中使用 coredata 来存储数据。在我以前的应用程序版本中,它有一些实体。现在我在做新版本,某些实体的一些属性名称和类型发生了变化。当我在我的设备中编译和运行应用程序时,它会崩溃并报告一些错误,因为旧的 coredata 不再有效。我可以通过从我的设备中删除应用程序并重新编译并安装它来解决这个问题。

我的问题是,如果用户从应用商店下载新版本,这种更改会导致用户设备崩溃吗?因为用户会创建一些数据并存储在较旧的核心数据中。另外,我是否需要将旧数据移动到新的coredata中,例如,属性名称从“photoId”更改为“picId”,那么旧的photoId值是否会因此而丢失?

【问题讨论】:

【参考方案1】:

您的问题的答案是肯定的,这也会在用户的设备上崩溃。但是有一个很好的机制可以避免所谓的核心数据迁移。互联网和 Apple 文档中有很多文章,这里有一些:

    Core Data Model Versioning and Data Migration - Apple Docs How to Perform a Lightweight Core Data Migration - Raywenderlich Custom Core Data Migrations - objc.io

【讨论】:

以上是关于ios coredata 会在新版本中更改实体属性导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:如何处理新版本?

为啥更改实体的属性时会删除我的 CoreData 信息?

在CoreData ios 10的实体内添加一个属性

迁移复杂的核心数据模型

Coredata 手动迁移

Core Data 可以在 iOS 上延迟获取 BLOB 属性吗?