Mogenerator和Xcode 4的优点/缺点

时间:2013-08-12 15:25:32

标签: ios objective-c xcode core-data

我对核心数据集成有点新,并且已经找到了许多代码示例和教程。有人建议使用Mogenerator生成实体子类。这是一种较老的方法吗?

Xcode允许为没有第三方工具的实体生成子类。任何人都可以提供理由,为什么我会选择使用Mogenerator而不是嵌入式Xcode工具来生成实体子类?

2 个答案:

答案 0 :(得分:5)

如果必须添加实例变量,Mogenerator具有真正的优势 (或属性由实例变量备份)到托管对象子类。

正如大卫已经说过的,定制Xcode生成的类文件有很大的缺点 如果在修改后必须重新创建文件,则更改将丢失 核心数据实体。

对于方法,可以通过在托管对象的类别中定义方法来解决此问题 子类,例如

@interface MyEntity (MyMethods)
- (NSString *)myMethod;
@end

但是,在类别中添加实例变量是不可能的(至少不是没有 使用Objective-C运行时技巧,例如“关联对象”)。这同样适用 属性,如果它们由实例变量备份。

因此,如果您有此要求,请将mogenerator与单独的类文件一起使用 是一个真正的优势。您可以将任何方法,属性或实例变量添加到 “人类”课程不会被覆盖。

如果您不需要添加实例变量,我看不出有很大差异或优势 无论哪种解决方案发电机创造了一些便利方法和结构 包含属性名称作为字符串,但如果您想使用它,则可以选择它 或不。

答案 1 :(得分:3)

这个article详细解释了如何在XCode4中使用mogenerator,以及你想要的原因。

在开发应用程序时,您可能会将自己的自定义方法添加到生成的实体类(NSManagedObject子类)中。但是当您运行xctool来生成类时,所有更改都会被覆盖并丢失!

Mogenerator为每个实体生成一对类 - 一个稳定的“机器”类,可以在进行更改时从模型中重新生成,以及一个可以编辑和添加方法的机器类的“人类”子类到。

我向你的Xcode项目推荐adding a target & build phase,它将在构建时生成你的实体类,所以你永远不必记得手动运行mogenerator。

此外,mogenerator将包含权限属性的const结构添加到生成的类中,因此您可以避免在谓词等中使用硬编码字符串。

相关问题