为什么我无法在 NSManagedObject 子类中重写 isEqual ?
我有两个自定义 NSManagedObject
类:Notes
和 Tags
。
当我重写 Tags
类中的 isEqual:
函数时,我收到如下错误消息:
“实体“标签”的“标签”类非法覆盖了 NSManagedObject -isEqual:”
为什么会发生这种情况?
I have two custom NSManagedObject
classes: Notes
and Tags
.
When I override the isEqual:
function in the Tags
class I get an error message like this:
'Class 'Tags' for entity 'Tags' has an illegal override of NSManagedObject -isEqual:'
Why is this happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html
您明确不允许覆盖NSManagedObject -isEqual(请参阅上面文档中的“不得覆盖的方法”部分)。 -isEqual 被 Core Data 基础设施大量使用,因此如果允许这样做,可能会在 Core Data 中引起许多问题。
根据您想要在 -isEqual 版本中执行的操作,您可以将其移动到另一个方法或类。
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/CoreDataFramework/Classes/NSManagedObject_Class/Reference/NSManagedObject.html
You're explicitly not allowed to override NSManagedObject -isEqual (see the "Methods you Must Not Override" section in the documentation above). -isEqual's heavily used by the Core Data infrastructure, so if this were allowed, you could cause numerous issues within Core Data.
Depending on what you want to do in your version of -isEqual, you could move it to another method or class.