iphone - 向核心数据实体添加属性

标签 iphone ios xcode core-data core-data-migration

这已经被讨论了很多,但我发现没有任何帮助...我只想向单个实体添加一个属性。当然不会丢失我的数据。

To do that, I followed these steps

但我认为它根本不起作用。只要不尝试使用新属性,就不会出现错误。但是在我的核心数据模型中(当我在 XCode 中打开 .xcdatamodel 时)它就在那里,甚至在我的实体的 NSManagedObject 子类中,新属性作为属性存在。但是当我尝试使用它时,会发生这种情况:

无法识别的选择器发送到实例 0x74f8520

实体名称与键“isFavoriteName”的键值编码不兼容。'

关键“isFavoriteName”是我刚刚添加的那个。就像我说的,我做了所有的步骤。我想念什么吗? 我认为,新的模型版本没有被使用,因为当我删除模型中的一些属性时,我的应用程序仍然有效并且删除的信息仍然显示......我已经将当前的核心数据模型版本设置为新版本(第 6 步)。

我希望你能帮助我!

尼克

编辑:我是否也需要更改代码中的某些内容?除了在创建 persistentStoreCoordinator 时设置选项之外...因为我有,比方说 myApp.xdatamodel,在里面,我知道有 myApp.xdatamodel 和 myApp 2,xdatamodel...但我的代码我仍然会做:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"mom"];

_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

最佳答案

没错——您链接到的页面遗漏了适用于您的情况的一个步骤。即使您创建了模型的新版本,您的代码仍按名称加载旧模型。

不要只是将其更改为加载版本 2。改为这样做:

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"myApp" withExtension:@"momd"];

这将在 momd 文件夹中查找并获取当前版本。在这种情况下,它将获得版本 2。如果您将来再次更改模型,它将获得当前的任何版本。

关于iphone - 向核心数据实体添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14779793/

相关文章:

iphone - 允许图层控制的绘图类

ios - 使用 Group By 名称获取核心数据属性

ios - 分配一个新的带有 nil 属性的 swift 类对象返回我 nil 对象

ios - 连接 IBOutlet 导致 nsunknownkey 异常

ios - MKAnnotationView 上的 UILongPressGestureRecognizer 不适用于单点触摸

ios - UIScrollView 的大小和图像的大小

xcode - 在uitextview中选择文本时,应用程序崩溃

iphone - 指定 .plist 中文件的路径

IOS构建警告: the transform cache was reset

iphone - 哪些工具提供 Xcode 调试器来查找逻辑错误?