我想知道密钥在NSDictionary中是如何工作的。通常,我会使用NSString作为键,例如:
NSString *stringKey = @"stringKey";
[mydict objectForKey:stringKey];
如果我想使用NSNumber怎么办?
NSNumber *numberKey = [NSNumber numberWithInt:3];
[mydict objectForKey:numberKey];
字典是否会查找数字3的密钥?或者它只是比较numberKey的地址?
答案 0 :(得分:14)
当且仅当[key1 isEqual:key2]
时,两个键是相等的。有些类可以使用-[NSObject isEqual:]
return self == other;
的{{1}}实现,但是类(例如NSString
,NSNumber
等)覆盖它以执行更多上下文时非常常见 - 具体比较。
答案 1 :(得分:3)
我认为它会考虑NSNumber的价值。我使用NSNumber作为字典的关键。
view.tag = [self getUniqueNSIntegerKey]; - >获取一个唯一的密钥并保存在view.tag
中[dictionary setOjbect:object forKey:[NSNumber numberWithInt:view.tag]]; //添加对象
object = [dictionary objectForKey:[NSNumber numberWithInt:view.tag]]; //通过view.tag获取对象
它只是有效.....