使用 Magical Record 迁移核心数据失败并显示“已删除不兼容的模型版本”
Posted
技术标签:
【中文标题】使用 Magical Record 迁移核心数据失败并显示“已删除不兼容的模型版本”【英文标题】:Core Data migration with Magical Record fails with "Removed incompatible model version" 【发布时间】:2015-02-13 08:44:50 【问题描述】:我正在尝试添加我的核心数据模型的新版本。我过去成功地做到了这一点,但这次我根本无法让它迁移。我正在使用 Magical Record 进行 Core Data 处理,场景如下;
-
核心数据堆栈在 AppDelegate 中的
application didFinishLaunchingWithOptions
期间设置
设置方法是:
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"MyDb.sqlite"];**
我添加了新版本的 .xcdatamodel 并将新版本设置为当前版本。
应用程序启动时,Magical Record 报告以下问题; “删除了不兼容的模型版本”。
我认为这一定是轻量级迁移规则的问题,但即使我只是添加新版本的 .xcdatamodel 而不对其进行任何更改,它仍然不会迁移。您对正在发生的事情有任何想法吗?现在已经为此苦苦挣扎了几天,似乎无法弄清楚。
【问题讨论】:
【参考方案1】:这是我目前使用的(抱歉 Swift 代码),但我使用的是最新版本的 MagicalRecord:
var dbPath = NSPersistentStore.MR_defaultLocalStoreUrl();
MagicalRecord.setLoggingLevel(MagicalRecordLoggingLevel.Error);
MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreAtURL(dbPath);
这段代码可以毫无问题地进行简单的迁移。只是为了确保我添加了一些额外的字段并查看了我的数据库的内容。一切都很好。
我的 MagicalRecord Podfile 条目:
pod 'MagicalRecord', :git => "https://github.com/magicalpanda/MagicalRecord.git"
【讨论】:
感谢您的建议。尝试使用 NSUrl 设置堆栈,而不是将名称作为 NSString 传递,但迁移仍然失败。以上是关于使用 Magical Record 迁移核心数据失败并显示“已删除不兼容的模型版本”的主要内容,如果未能解决你的问题,请参考以下文章
应用程序通过 RestKit 和 Magical Record 滞后于巨大的核心数据映射
使用 Magical Record 将对象数组插入 Core Data
Magical Record 不会保存到 SQLite 文件
ios Magical Record 保存在 UIApplicationWillTerminateNotification