我注意到与此主题相关的几个问题没有得到答复。这是一个灰色地带,没有人真正理解它吗?
这是我的问题: 我是我的应用程序开发的中途,应用程序从未使用过我的iphone模拟器。我的核心数据结构中的一个属性需要更改类型。因为我的应用程序从未在我的iPhone模拟器之外使用过,我先删除了sqlite文件。加倍这一步,我也进入了iPhone模拟器菜单并选择了“重置内容和设置......”。
然后,我编辑了xcdatamodel文件并更改了我的属性类型。我保存了文件并退出了。没有任何其他变化,我编译。我预计它会因为我的类型改变而失败。它没!在此之后,我为我的属性分配了一个新类型的值,它无法编译?!
我需要做些其他事情才能让改变生效吗? 我真的非常感谢我回答我的问题。
谢谢!
答案 0 :(得分:2)
核心数据有时会很奇怪,直到你做Build - >清洁从头开始构建。
答案 1 :(得分:1)
当您更改模型并且没有sqlite文件时,Core Data将只创建一个当前模型,因此您的第一个实例非常有意义。
在你的第二个实例中,如果你没有在这两次迭代之间删除sqlite文件(或重置sim),你会收到一个错误,因为sqlite文件已经存在,并且它不再与模型匹配。< / p>
每当您更改模型时,您需要对其进行版本化或删除sqlite文件。否则它们将不匹配并产生错误。
如果这不是问题,那么如果您提供了所见错误的详细信息,那将非常有用。
我仍然想知道在不需要迁移的情况下,在早期开发阶段处理核心数据变化的正确方法。
正确的方法是删除应用程序/重置模拟器并从一个新的sqlite文件开始。除了迁移之外没有其他选择,正如您所推测的那样,在开发过程中这是不正确的。