更改模型后的核心数据迁移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改模型后的核心数据迁移相关的知识,希望对你有一定的参考价值。

我已经改变了我的核心数据模型,并在几周后发现它导致应用程序的旧版本崩溃。我收到错误:

Error Domain=NSCocoaErrorDomain Code=134140 "Persistent store migration failed, missing mapping model." 

我的问题是我不记得在我的模型中改变任何东西并且不知道导致迁移问题的原因。有什么方法可以让我找到这个,或者看看旧版本的模型?

(我的项目目前还没有受版本控制。)

答案

你不太可能知道你改变了什么。我的猜测是你对一个现有的模型版本进行了编辑,因为它与同一模型的先前版本一起安装 - 核心数据崩溃。

在那种情况下,你无法真正做到。只是在持久存储协调器抛出错误时捕获错误,从所述URL中删除存储并添加新存储。

do {
    try persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: storeURL)
} catch let error {        
    print("Error adding persistent store: (error). Will try with a new one.")
    do {
        try FileManager.default.removeItem(at: storeURL)
        try persistentStoreCoordinator.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: storeURL)
    } catch let error {
        fatalError("Failed creating new persistent store with error: (error)")
    }
}

并在您的项目中添加和使用git - 它非常简单且非常有用,即使您没有在GitHub或任何其他存储库托管上托管源代码 - 仅适用于此类情况。

以上是关于更改模型后的核心数据迁移的主要内容,如果未能解决你的问题,请参考以下文章

核心数据迁移:将关系从一个实体更改为其父实体后的异常

更改某些实体中某些属性的类型后如何迁移核心数据模型?

无需迁移即可替换核心数据模型

对核心数据模型进行微小更改后的链接器错误

核心数据轻量级迁移 - 何时版本?

快速核心数据迁移以更改属性类型