问题描述
我想知道 NSDictionary 中的键是如何工作的.通常,我会使用 NSString 作为键,例如:
I was wondering how keys work in a NSDictionary. Usually, I will use a NSString as a key for example:
NSString *stringKey = @"stringKey";
[mydict objectForKey:stringKey];
如果我想使用 NSNumber 怎么办:
What if I wanted to use a NSNumber:
NSNumber *numberKey = [NSNumber numberWithInt:3];
[mydict objectForKey:numberKey];
字典会去寻找数字为 3 的键吗?还是只是比较 numberKey 的地址?
Does the dictionary go look for the key with number 3? or would it just compare the address of the numberKey?
推荐答案
两个键相等当且仅当 [key1 isEqual:key2]
.某些类可能会使用 return self == other;
的 -[NSObject isEqual:]
实现,但它对于类很常见(例如 NSString
code>、NSNumber
等)来覆盖它以进行更多特定于上下文的比较.
Two keys are equal if and only if [key1 isEqual:key2]
. Some classes may go with the -[NSObject isEqual:]
implementation of return self == other;
, but it's quite common for classes (such as NSString
, NSNumber
, etc) to override it to do more context-specific comparison.
这篇关于NSNumber 作为 NSDictionary 的键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!