我对核心数据集成有点陌生,并发现了许多代码示例和教程。一些人建议使用Mogenerator来生成实体子类。这是比较老的方法吗?
Xcode允许为没有第三方工具的实体生成子类。有人能给出为什么我会选择使用Mogenerator而不是嵌入式Xcode工具来生成实体子类的原因吗?
发布于 2013-08-12 15:38:50
这个文章详细解释了如何在XCode4中使用mogenerator,以及为什么要这样做。
在开发应用程序时,您可能会将自己的自定义方法添加到生成的实体类(NSManagedObject子类)中。但是,当您运行xctool生成类时,您的所有更改都会被覆盖和丢失!
Mogenerator为每个实体生成一对类--一个稳定的“机器”类,可以在您进行更改时从模型中重新生成,以及一个机器类的“人工”子类,您可以对其编辑和添加方法。
我向您的Xcode项目推荐添加目标&构建阶段,它将在构建时生成实体类,因此您不必记得手动运行mogenerator。
此外,mogenerator还将包含实体属性的构造结构添加到生成的类中,这样可以避免在谓词中使用硬编码字符串等。
发布于 2013-08-12 16:55:09
如果必须将实例变量(或由实例变量支持的属性)添加到托管对象子类中,Mogenerator有一个真正的优势。
正如David已经说过的,自定义Xcode生成的类文件有一个很大的缺点,如果您必须在修改Core数据实体之后重新创建该文件,那么您的更改就会丢失。
对于方法,这可以通过在托管对象子类的类别中定义方法来解决。
@interface MyEntity (MyMethods)
- (NSString *)myMethod;
@end但是,在类别中添加实例变量是不可能的(至少不使用objects运行时技巧,例如“关联对象”)。如果属性由实例变量备份,则同样适用于这些属性。
因此,如果您有这样的要求,那么在单独的类文件中使用mogenerator是一个真正的优势。您可以向"Human“类添加任何不会被覆盖的方法、属性或实例变量。
如果您不需要添加实例变量,我不认为这两种解决方案都有很大的区别或优势。mogenerator创建了一些方便的方法,还创建了将属性名称作为字符串包含的结构,但如果您想要使用或不使用,这是您的选择。
https://stackoverflow.com/questions/18190845
复制相似问题