0

我正在处理带有 NSManagedObject 键的 NSMutableDictionary。我的键中的一些数据将会发生变异,但是 NSMutableDictionary 类引用指出使用 setObject 时会复制键!当我想使用键访问值时,它会将我给它的键与键列表中的键进行比较。

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

我在这里看到了一些不确定的答案:我应该使用 == 还是 [NSManagedObject isEqual:] 来比较同一上下文中的托管对象?,其中一个说它比较哈希方法。哈希码不一定是对象的唯一标识符,对吧?

4

1 回答 1

1

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

由于NSManagedObjcetclass 不符合<NSCoding>协议 - 它不能用作NSDictionaryor中的键NSMutableDictionary

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

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

于 2017-12-27T19:38:40.513 回答