【发布时间】:2011-05-24 06:43:47
【问题描述】:
我想存储一堆键值对,键是我自己的对象 (ObjectA),它继承自 NSObject,值是一个 int。
我正在尝试使用 NSMutableDictionary。我了解您只能将对象类型存储在字典中,因此我有以下内容:
id value = [NSNumber numberWithInt:my_number];
[[self dictionary] setObject:value forKey:myObjectA];
现在这给了我一个错误,说
-[ObjectA copyWithZone:]: 无法识别的选择器发送到实例
这很好,我知道对象键需要实现 NSCopying 协议。然而我读到你可以通过使用 NSValue 包装你的对象来做到这一点。
谁能解释一下我将如何包装我的对象,以及如何通过键找到值?我仍然可以使用dictionary objectForKey:myObjectA 还是在搜索时也必须用 NSValue 对象包装 myObjectA ?或者我应该在我的自定义类上实现 NSCopying,还是使用字符串键?
我正在寻找这种使用字典的最简单和最简单的方法,如果必须,我将实现一个字符串键并使用 setValue:forKey: 代替,但如果可以的话,我宁愿使用对象键。
【问题讨论】:
标签: objective-c nsdictionary key-value