我正在为使用Core Data持久保存数据的应用开发更新。 我使用Magical Record更容易处理Core Data。
此更新不涉及对数据模型的任何更改。
然而,当我在设备上安装新更新时,现有数据将被删除,并且应用程序将打开一个空数据存储。记录的数据迁移问题没有警告或错误消息。在设置Core Data堆栈([MagicalRecord setShouldDeleteStoreOnModelMismatch:NO];
)之前,应用程序也不会崩溃并且shouldDeleteStoreOnModelMismatch设置为NO。
没有后续的核心数据问题(新数据保持不变)。
此更新中对应用程序所做的主要更改是:
在我的App Delegate中,我使用以下方式设置Core Data堆栈:
[MagicalRecord setupAutoMigratingCoreDataStack];
有没有人知道造成这种情况的原因是什么?
答案 0 :(得分:2)
如果您有一个空的商店,通常意味着您的迁移模型没有正确升级,或者您的模型架构标识符与数据存储的版本标识符不匹配。
确保保留核心数据模型的两个版本(之前和之后)。这就是核心数据如何将商店与您的模型匹配,以及如何知道哪个版本是最新版本。
答案 1 :(得分:2)
删除商店后,您需要指定要自动将商店替换为新商店。
[MagicalRecord shouldAutoCreateDefaultPersistentStoreCoordinator];
[MagicalRecord setShouldDeleteStoreOnModelMismatch:YES];
[MagicalRecord setupAutoMigratingCoreDataStack];