带有类别的 NSManagedObjects

发布于 2025-01-06 11:06:17 字数 155 浏览 1 评论 0原文

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

I believe it is a common practice to put custom code for a NSManagedObject in a category of the subclass since Xcode will overrite your generated subclass when the model is edited. I just wanted to confirm this. I have seen examples where people say it is bad to combine categories with methods that are already implemented in the class hierarchy. I'm not sure if this is just for the cases when the class that has the actual category has the method already implemented or in all cases.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

云归处 2025-01-13 11:06:17

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

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

Wolf Rentzsch 的 mogenerator 本质上使用了这种方法,并且还生成了一些 Xcode 无法生成的便捷方法。可能值得一试,因为它可能是一个有用的工具,但 mogenerator 并不是做你想做的事情所必需的。

The problem with overriding a method in a category is that you can't call the original implementation like you'd normally do using [super doSomething]. Usually, when you override a method, you still want to be able to call the original implementation doing something extra before and/or after the original implementation gets executed.

One fairly clean solution is to let Xcode generate NSManagedObject subclasses that you don't touch directly. Instead, create another, custom subclass of each Xcode-generated NSManagedObject subclass that you can edit without worrying about it being overwritten.

Wolf Rentzsch's mogenerator essentially uses this approach, and additionally generates some nice convenience methods that Xcode doesn't generate. Might be worth checking out because it can be a helpful tool, but mogenerator is not necessary to do what you're trying to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文