我相信将 NSManagedObject 的自定义代码放入子类的类别中是一种常见的做法,因为编辑模型时 Xcode 会覆盖生成的子类。我只是想确认这一点。我见过一些例子,人们说将类别与类层次结构中已经实现的方法结合起来是不好的。我不确定这是否仅适用于具有实际类别的类已实现该方法的情况或所有情况。
最佳答案
重写类别中的方法的问题在于,您无法像通常使用 [super doSomething]
那样调用原始实现。通常,当您重写方法时,您仍然希望能够调用原始实现,在执行原始实现之前和/或之后执行一些额外的操作。
一个相当干净的解决方案是让 Xcode 生成您不直接接触的 NSManagedObject 子类。相反,为每个 Xcode 生成的 NSManagedObject 子类创建另一个自定义子类,您可以对其进行编辑,而不必担心它被覆盖。
Wolf Rentzsch 的 mogenerator本质上使用了这种方法,并且另外生成了 Xcode 不生成的一些很好的便捷方法。可能值得一试,因为它可能是一个有用的工具,但 mogenerator 并不是完成您想要做的事情所必需的。
关于objective-c - 带有类别的 NSManagedObjects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297101/