根据我的阅读,词典中的键是唯一的。
考虑以下代码:
NSMutableDictionary *mydic = [NSMutableDictionary dictionary];
[mydic setObject:@"value1" forKey:@"key1"];
[mydic setObject:@"value1" forKey:@"key1"];
[mydic setObject:@"value1" forKey:@"key1"];
为什么我可以在没有任何错误的情况下运行它?我该怎么做才能避免重复密钥?
答案 0 :(得分:23)
是键是唯一的。使用现有密钥调用-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