我想存储一堆键值对,键是我自己继承自NSObject的对象(ObjectA),值是一个int。
我正在尝试使用 NSMutableDictionary。我知道你只能在字典中存储对象类型,所以我有以下内容:
id value = [NSNumber numberWithInt:my_number];
[[self dictionary] setObject:value forKey:myObjectA];
现在这给了我一个错误,说
-[ObjectA copyWithZone:]: unrecognized selector sent to instance
很好,我知道对象键需要实现 NSCopying 协议(protocol)。然而,我后来读到你可以通过使用 NSValue 包装你的对象来做到这一点。
有人可以解释一下我将如何包装我的对象,然后我如何通过键找到值吗?我仍然可以使用 dictionary objectForKey:myObjectA
还是在我搜索时也必须用 NSValue 对象包装 myObjectA?或者我应该在自定义类上实现 NSCopying,还是改用字符串键?
我正在寻找使用字典的最简单方法,如果必须的话,我会实现一个字符串键并使用 setValue:forKey: 代替,但如果可以的话,我宁愿使用对象键。
最佳答案
字典键总是被复制。所以你只需要实现 NSCopying类的协议(protocol),它只是 copyWithZone:
方法。
此外,您应该为您的类实现 isEqual:
方法。
编辑:如何实现您的copyWithZone:
取决于许多因素(主要因素:深拷贝与浅拷贝)。参见 Apple 的 Implementing Object Copy指南和this SO answer .
关于objective-c - 带有 NSMutableDictionary (Objective-C) 的对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106662/