带有类别的NSManagedObjects

时间:2012-02-15 16:22:49

标签: objective-c ios core-data categories nsmanagedobject

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

1 个答案:

答案 0 :(得分:3)

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

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

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