假设变量 A 和 B 在同一托管对象上下文中保存托管对象的实例。我需要确保它们与持久存储中的相同“记录”相关联。关于 Faulting and Uniquing 的部分在核心数据编程指南中说:
Core Data ensures that—in a given managed object context—an entry in a persistent store is associated with only one managed object.
由此看来,指针比较似乎足以满足我的目的。或者使用 isEqual: 比较同一上下文中的托管对象是否有意义?
最佳答案
使用==
判断两个指针是否指向同一个对象。使用 -isEqual
确定两个对象是否“相等”,其中相等的概念取决于所比较的对象。 -isEqual:
通常比较 -hash
方法返回的值。我之前写道,如果两个托管对象包含相同的值,-isEqual:
似乎有可能返回 true。这显然是不对的。文档中有一些关于确保可变对象的哈希值在集合中时不会更改的警告,并且知道给定对象是否在集合中可能很困难。似乎可以肯定的是,托管对象的散列不依赖于该对象包含的数据,而且更有可能与该对象不可变的东西相关联;对象的 -objectID
值似乎是一个可能的候选值。
考虑到这一切,我正在改变我的看法 ;-)。每条记录在给定上下文中仅表示一次,因此 ==
可能是安全的,但 -isEqual:
似乎能更好地表达您的意图。
关于objective-c - 我应该使用 == 还是 [NSManagedObject isEqual :] to compare managed objects in the same context?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6298005/