应用更新后Core Data存储空白 - 但数据模型未更改

时间:2013-04-30 19:18:02

标签: ios objective-c core-data automatic-ref-counting magicalrecord

我正在为使用Core Data持久保存数据的应用开发更新。 我使用Magical Record更容易处理Core Data。

此更新不涉及对数据模型的任何更改。

然而,当我在设备上安装新更新时,现有数据将被删除,并且应用程序将打开一个空数据存储。记录的数据迁移问题没有警告或错误消息。在设置Core Data堆栈([MagicalRecord setShouldDeleteStoreOnModelMismatch:NO];)之前,应用程序也不会崩溃并且shouldDeleteStoreOnModelMismatch设置为NO。

没有后续的核心数据问题(新数据保持不变)。

此更新中对应用程序所做的主要更改是:

  • 将应用转换为ARC
  • 将应用转换为使用CocoaPods作为外部库
  • 将MagicalRecord库从v1.8.3更新为v2.1

在我的App Delegate中,我使用以下方式设置Core Data堆栈:

[MagicalRecord setupAutoMigratingCoreDataStack];

有没有人知道造成这种情况的原因是什么?

2 个答案:

答案 0 :(得分:2)

如果您有一个空的商店,通常意味着您的迁移模型没有正确升级,或者您的模型架构标识符与数据存储的版本标识符不匹配。

确保保留核心数据模型的两个版本(之前和之后)。这就是核心数据如何将商店与您的模型匹配,以及如何知道哪个版本是最新版本。

答案 1 :(得分:2)

删除商店后,您需要指定要自动将商店替换为新商店。

[MagicalRecord shouldAutoCreateDefaultPersistentStoreCoordinator]; [MagicalRecord setShouldDeleteStoreOnModelMismatch:YES]; [MagicalRecord setupAutoMigratingCoreDataStack];