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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了isEqual of NSManagedObject - 它如何确定相等性?相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

由于NSManagedObjcet类不符合<NSCoding>协议 - 它不能作为NSDictionaryNSMutableDictionary的关键。

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

使用objectID还有另一个好处。如果你有多个NSManagedObjectContext,那么同一个实体将为每个NSManagedOBject提供不同的NSManagedObjectContext实例。知道他们是唯一的唯一方法是通过他们的objectID财产 - 这将是isEqual

以上是关于isEqual of NSManagedObject - 它如何确定相等性?的主要内容,如果未能解决你的问题,请参考以下文章

isEqual

NSManagedObjects 的 isEqual

LocalDate:等于与 isEqual

hash isEqual

NSDictionary实现原理-ios哈希hash和isEqual

isEqual,isEqualTostring,==三者的区别