带有类别的NSManagedObjects

我认为将NSManagedObject自定义代码放在子类的类别中是一种常见的做法,因为Xcode会在编辑模型时覆盖生成的子类。 我只是想证实这一点。 我见过一些例子,人们说将类别与已经在类层次结构中实现的方法结合起来是不好的。 我不确定这是否仅适用于具有实际类别的类具有已实现的方法或在所有情况下的情况。

覆盖类别中的方法的问题是,您不能像通常使用[super doSomething]那样调用原始实现。 通常,当您重写方法时,您仍然希望能够在执行原始实现之前和/或之后调用原始实现执行额外操作。

一个相当干净的解决方案是让Xcode生成您不直接触摸的NSManagedObject子类。 相反,创建每个Xcode生成的NSManagedObject子类的另一个自定义子类,您可以编辑它而不必担心它被覆盖。

Wolf Rentzsch的mogenerator基本上使用了这种方法,并且还生成了Xcode不会生成的一些很好的便利方法。 可能值得一试,因为它可能是一个有用的工具,但是没有必要使用mogenerator来做你想做的事情。