isEqual of NSManagedObject - 它如何确定相等性?

时间:2013-07-10 01:48:24

标签: objective-c dictionary key

我正在处理带有NSManagedObject键的NSMutableDictionary。我的密钥中的一些数据将被改变,但NSMutableDictionary类引用声明在使用setObject时复制了密钥!当我想使用键访问值时,它会将我给它的键与键列表中的键进行比较。

很抱歉,如果这是一个愚蠢的问题,但我在NSManagedObject类引用中找不到isEqual的作用。它是否比较每个值,比较一些唯一标识符,比较内存地址或其他什么?

我在这里看到了一些不确定的答案:Should I use == or [NSManagedObject isEqual:] to compare managed objects in the same context?,其中一个人说它比较哈希方法。散列码不一定是对象的唯一标识符,对吗?

1 个答案:

答案 0 :(得分:1)

我看到其他人在评论中已经回答了 - 但是对于官方和#34;它 - 这是正确的详细答案。

由于NSManagedObjcet类不符合<NSCoding>协议,因此无法作为NSDictionaryNSMutableDictionary中的密钥。

相反 - 您希望将managedObject的objectID属性用作字典中的键。 objectID是一个NSString,当然符合NSCoding

使用objectID还有另一个好处。如果您有多个NSManagedObjectContext,则同一实体将为每个NSManagedOBject设置不同的NSManagedObjectContext实例。了解他们之一的唯一方法是通过他们的objectID财产 - isEqual