【问题标题】:Core data migration after changing model改变模型后的核心数据迁移
【发布时间】:2018-08-09 14:27:09
【问题描述】:

不久前我更改了我的核心数据模型,几周后发现它会导致旧版本的应用程序崩溃。我得到了错误:

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

我的问题是我不记得在我的模型中进行了任何更改,也不知道是什么导致了迁移问题。有什么办法让我找出来,或者看看旧版本的模型?

(此时我的项目不受版本控制。)

【问题讨论】:

  • 如果您进行模型迁移,旧版本的模型应该仍然在应用程序中。

标签: ios core-data


【解决方案1】:

我遇到了同样的问题。我从模拟器或物理设备中删除了该应用并重新安装。

【讨论】:

    【解决方案2】:

    你不可能知道你改变了什么。 我的猜测是您对一个现有模型版本进行了编辑,并且由于它是与同一模型的先前版本一起安装的 - Core Data 崩溃。

    在这种情况下,你真的无能为力。只需在持久存储协调器抛出错误时捕获错误,从所述 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 或任何其他存储库托管上托管源代码,它也非常简单且非常有用 - 仅适用于这种情况。

    【讨论】:

    • 谢谢,您知道我应该如何删除商店并添加新商店吗?我
    • Swift 还是 Objective-C?
    • 并不重要,但最好是 Swift。 :)
    • 在 Swift 中添加了一个示例 - 希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多