NSNumber是NSDictionary的关键

时间:2011-09-07 17:10:50

标签: objective-c

我想知道密钥在NSDictionary中是如何工作的。通常,我会使用NSString作为键,例如:

NSString *stringKey = @"stringKey";
[mydict objectForKey:stringKey];

如果我想使用NSNumber怎么办?

NSNumber *numberKey = [NSNumber numberWithInt:3];
[mydict objectForKey:numberKey];

字典是否会查找数字3的密钥?或者它只是比较numberKey的地址?

2 个答案:

答案 0 :(得分:14)

当且仅当[key1 isEqual:key2]时,两个键是相等的。有些类可以使用-[NSObject isEqual:] return self == other;的{​​{1}}实现,但是类(例如NSStringNSNumber等)覆盖它以执行更多上下文时非常常见 - 具体比较。

答案 1 :(得分:3)

我认为它会考虑NSNumber的价值。我使用NSNumber作为字典的关键。

1。将密钥存储在view.tag

view.tag = [self getUniqueNSIntegerKey]; - >获取一个唯一的密钥并保存在view.tag

[dictionary setOjbect:object forKey:[NSNumber numberWithInt:view.tag]]; //添加对象

2。稍后使用view.tag检索对象

object = [dictionary objectForKey:[NSNumber numberWithInt:view.tag]]; //通过view.tag获取对象

它只是有效.....