【问题标题】:Updating NSManagedObject subclass after updating data model更新数据模型后更新 NSManagedObject 子类
【发布时间】:2011-12-05 20:06:25
【问题描述】:

我有一个用于创建 NSManagedObject 子类的原始数据模型。我现在已经为这些子类添加了自定义代码。

如果您向现有实体添加新属性,Xcode 4.1/4.2 中是否有一种简单的方法可以将新属性更新/添加到现有类。

目前我能看到的唯一方法是创建新的子类,然后复制并粘贴自定义代码,尽管这感觉很容易出错。

我目前正在开发中,所以我不太关心数据存储的升级要求。只是编码快捷方式。

干杯。

【问题讨论】:

  • 结帐发电机。做你想做的一切以及更多。说真的,它很棒,可以为您节省很多时间。

标签: objective-c core-data xcode4


【解决方案1】:

这是我为这个案例所做的。您只需执行一次,以后对数据模型进行更改时无需进行更多工作。

我为我的NSModeledObject 子类创建了单独的.h.m 文件,并带有类别。对于名为“事件”的实体,它看起来像 Event+Helper.h 并开始如下:

#import "Event.h"
@interface Event (Helper)
// declare your public methods
@end

现在,当您从模型生成新的子类时,所有这些仍然有效。

【讨论】:

  • 这是个好主意,但它对我不起作用,因为我的自定义类中有几个实例变量。不过感谢您的建议。
  • 我看不出您的情况如何排除我的解决方案。相反,我认为它非常适合这个目的。您的自定义变量将存在于您的建模对象子类的类别版本中,这同样好。
  • 我也会这么想的。但 Xcode 和编译器却不这么认为。干杯。
  • 对不起,我尝试了你的建议。编译器抱怨某个类别中的 ivars。如前所述,我认为这是一个好主意,并且显然适用于某些情况,只是在涉及 ivars 时不适用。
  • 作为参考,来自编译器的确切信息是:Ivars may not be placed in categories #import "TestObject.h" `` @interface TestObject (Test) { ` int ivartest;` } `` @end
猜你喜欢
  • 1970-01-01
  • 2014-09-02
  • 2021-08-20
  • 2015-03-26
  • 1970-01-01
  • 2013-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
相关资源
最近更新 更多