【发布时间】:2013-07-10 01:48:24
【问题描述】:
我正在处理带有 NSManagedObject 键的 NSMutableDictionary。我的键中的一些数据会发生变异,但是 NSMutableDictionary 类引用指出使用 setObject 时会复制键!当我想使用键访问值时,它会将我给它的键与键列表中的键进行比较。
抱歉,这是一个愚蠢的问题,但我在 NSManagedObject 类参考中找不到 isEqual 的作用。它是比较每个值、比较一些唯一标识符、比较内存地址还是其他什么?
我在这里看到了一些不确定的答案:Should I use == or [NSManagedObject isEqual:] to compare managed objects in the same context?,其中一个说它比较了哈希方法。哈希码不一定是对象的唯一标识符,对吧?
【问题讨论】:
-
你是如何让它工作的? NSManagedObjects 不符合 NSCoding,因此不应作为 NSDictionary 的键。相反,我建议使用 [nsManagedObject objectID] 作为键,因为它符合 NSCopy,并且您可以使用 isEqual: 正如您所期望的那样。
-
它在 NSManagedObject 类参考中说它适用于大多数数据结构。我可能会遗漏一些东西,因为我对此很陌生,但 Xcode 似乎让我将它们作为键放入。无论如何,objectID 听起来是个好主意。
-
好吧,澄清一下,这是个好主意。我使用 objectIDs 作为键。我不知道为什么我之前没有想到这一点......
标签: objective-c dictionary key