如何定义实体身份

时间:2015-02-20 10:57:18

标签: cocoa-touch core-data nsmanagedobject

有没有办法定义实体的哪些属性应该定义其对象'NSManagedObjectID

我不希望构建额外的字典和循环来按属性值进行比较,而是希望能够直接使用-[NSManagedObjects isEqual:],以及也允许使用的NSSet功能。 / p>

换句话说:如果一个实体有一个逻辑上属于其主键的属性,那么如何告诉CoreData将它用作对象相等性测试呢?

1 个答案:

答案 0 :(得分:1)

。无论如何,子类化都无济于事。

核心数据并不关心您是否创建重复记录。就它而言,如果两个托管对象在持久性存储中表示相同的底层实例,则它们是相等的。管理对象之间没有“平等”的其他概念。

子类化没有帮助,因为NSManagedObject的文档解释了:

  

NSManagedObject本身可以自定义NSObject的许多功能,以便可以将托管对象正确地集成到Core Data基础结构中。核心数据依赖于NSManagedObject的以下方法的实现,因此您绝对不能覆盖这些方法:[...] isEqual:

您可以创建自己的方法来以任何方式比较托管对象,但任何依赖isEqual:的行为都将获得Core Data的标准行为。