我正在处理带有NSManagedObject键的NSMutableDictionary。我的密钥中的一些数据将被改变,但NSMutableDictionary类引用声明在使用setObject时复制了密钥!当我想使用键访问值时,它会将我给它的键与键列表中的键进行比较。
很抱歉,如果这是一个愚蠢的问题,但我在NSManagedObject类引用中找不到isEqual的作用。它是否比较每个值,比较一些唯一标识符,比较内存地址或其他什么?
我在这里看到了一些不确定的答案:Should I use == or [NSManagedObject isEqual:] to compare managed objects in the same context?,其中一个人说它比较哈希方法。散列码不一定是对象的唯一标识符,对吗?
答案 0 :(得分:1)
我看到其他人在评论中已经回答了 - 但是对于官方和#34;它 - 这是正确的详细答案。
由于NSManagedObjcet
类不符合<NSCoding>
协议,因此无法作为NSDictionary
或NSMutableDictionary
中的密钥。
相反 - 您希望将managedObject的objectID
属性用作字典中的键。 objectID
是一个NSString,当然符合NSCoding
。
使用objectID
还有另一个好处。如果您有多个NSManagedObjectContext
,则同一实体将为每个NSManagedOBject
设置不同的NSManagedObjectContext
实例。了解他们之一的唯一方法是通过他们的objectID
财产 - isEqual
。