模型中的更改后重建CoreData而不进行版本控制

时间:2017-05-25 11:30:27

标签: ios swift xcode core-data

我正在开发自己的应用,我的核心数据存在问题: 我在AppStore上提交了我的第一个应用程序,在下一个版本中,我一直在对模型进行更改(已添加新实体,并且已删除,添加或更新了现有实体中的少数属性)。 我做的错误是不创建新的模型版本,我只是做了更改。 现在,当我使用应用程序的第一个版本并且我更改为第二个版本时,应用程序崩溃,因为核心数据模型已更改。 我不能进行任何迁移,因为模型没有版本化,所以我没有任何以前的版本。

我的想法是,当应用程序第一次运行时,删除数据模型让应用程序再次创建它(数据丢失没有问题)。

我见过很多想法: Stack Overflow 1 Stack Overflow 2

但不起作用,因为他们找不到我的文件,那是我的代码:

    let documentsDirectory = URL(string: applicationDirectoryPath())! as NSURL
    // I've tried many names as: Model.sqlite, Database.sqlite, database.sqlite
    let storeURL = documentsDirectory.appendingPathComponent("model.sqlite")
    do
        {
            try FileManager.default.removeItem(at: storeURL!)
        } catch
        {
            print("Problem deleting core data")
        }

如何找到要放入此功能的文件的名称

appendingPathComponent("I don't know the name of the file")

我该如何做尾声呢?还有其他想法吗?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

本教程包含有关如何进行迁移的示例以及添加第二版CD模型的步骤。如果对CD的更改很小,那么您将无需进行任何工作来使更新顺利运行。否则,将旧数据结构映射到新数据结构将需要一些工作,以便数据不会丢失。

https://www.raywenderlich.com/145860/core-data-migrations-tutorial-lightweight-migrations-2