我正在开发自己的应用,我的核心数据存在问题: 我在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")
我该如何做尾声呢?还有其他想法吗?
谢谢大家!
答案 0 :(得分:0)
本教程包含有关如何进行迁移的示例以及添加第二版CD模型的步骤。如果对CD的更改很小,那么您将无需进行任何工作来使更新顺利运行。否则,将旧数据结构映射到新数据结构将需要一些工作,以便数据不会丢失。
https://www.raywenderlich.com/145860/core-data-migrations-tutorial-lightweight-migrations-2