Да ключи уникальны.Вызов -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