首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mogenerator和Xcode 4的优缺点

Mogenerator和Xcode 4的优缺点
EN

Stack Overflow用户
提问于 2013-08-12 15:25:32
回答 2查看 946关注 0票数 1

我对核心数据集成有点陌生,并发现了许多代码示例和教程。一些人建议使用Mogenerator来生成实体子类。这是比较老的方法吗?

Xcode允许为没有第三方工具的实体生成子类。有人能给出为什么我会选择使用Mogenerator而不是嵌入式Xcode工具来生成实体子类的原因吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-12 15:38:50

这个文章详细解释了如何在XCode4中使用mogenerator,以及为什么要这样做。

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

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

我向您的Xcode项目推荐添加目标&构建阶段,它将在构建时生成实体类,因此您不必记得手动运行mogenerator。

此外,mogenerator还将包含实体属性的构造结构添加到生成的类中,这样可以避免在谓词中使用硬编码字符串等。

票数 3
EN

Stack Overflow用户

发布于 2013-08-12 16:55:09

如果必须将实例变量(或由实例变量支持的属性)添加到托管对象子类中,Mogenerator有一个真正的优势。

正如David已经说过的,自定义Xcode生成的类文件有一个很大的缺点,如果您必须在修改Core数据实体之后重新创建该文件,那么您的更改就会丢失。

对于方法,这可以通过在托管对象子类的类别中定义方法来解决。

代码语言:javascript
复制
@interface MyEntity (MyMethods)
- (NSString *)myMethod;
@end

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

因此,如果您有这样的要求,那么在单独的类文件中使用mogenerator是一个真正的优势。您可以向"Human“类添加任何不会被覆盖的方法、属性或实例变量。

如果您不需要添加实例变量,我不认为这两种解决方案都有很大的区别或优势。mogenerator创建了一些方便的方法,还创建了将属性名称作为字符串包含的结构,但如果您想要使用或不使用,这是您的选择。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18190845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档