Mogenerator和Xcode 4的优点/缺点

Phe*_*ter 1 xcode core-data objective-c ios

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

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

Mar*_*n R 5

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

正如David已经说过的那样,自定义Xcode生成的类文件有一个很大的缺点,即如果在修改Core Data实体后必须重新创建文件,则更改会丢失.

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

@interface MyEntity (MyMethods)
- (NSString *)myMethod;
@end
Run Code Online (Sandbox Code Playgroud)

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

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

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