NSDictionary中的键可以被复制



据我所知,字典中的键是唯一的。

考虑以下代码:

NSMutableDictionary *mydic = [NSMutableDictionary dictionary];
[mydic setObject:@"value1" forKey:@"key1"]; 
[mydic setObject:@"value1" forKey:@"key1"];
[mydic setObject:@"value1" forKey:@"key1"];

为什么我可以运行这个而没有任何错误?我该怎么做才能避免重复的钥匙?

是键是唯一的。使用现有键调用-setObject:forKey:会覆盖旧值—它设置值,而不是添加值。你可以检查:

[mydict setObject:@"1" forKey:@"key1"];
[mydict setObject:@"2" forKey:@"key1"];
NSLog(@"%@", mydict);

如果不希望覆盖现有项,请使用-objectForKey::

检查它是否存在。
@implementation NSMutableDictionary (AddItem)
-(void)addObjectWithoutReplacing:(id)obj forKey:(id)key {
   if ([self objectForKey:key] == nil)
      [self setObject:obj forKey:key];
}
@end

最新更新