Я создал код, который делает вспомогательный словарь для хранения ключей основного словаря. Поэтому я могу получить ключ от стоимости. Чтобы сделать их уникальными, в случае двух или более одинаковых значений, я храню идентификаторы объектов словаря как ключи и их ключи как объекты.NSDictionary хранит копию избыточных объектов - как предотвратить?
Но если два объекта имеют одинаковое значение, они также имеют одинаковый идентификатор. Поэтому я не могу получить два различных ключа:
NSDictionary *myDict = @{@"key1": @"obj1", @"key2": @"obj1", @"key3" : @"x"};
NSLog(@"%p",[myDict objectForKey:@"key1"]);
NSLog(@"%p",[myDict objectForKey:@"key2"]);
Выход:
2013-03-06 02:03:28.740 DictTest[2855:303] 0x1000028e8
2013-03-06 02:03:28.741 DictTest[2855:303] 0x1000028e8
Как я могу предотвратить это?
От «ID» вы имеете в виду «адрес»? Если это так, NSDictionary не имеет к этому никакого отношения. @ «obj1» всегда указывает на тот же объект, независимо от того, где он используется в программе. –
На деле я имел в виду идентификатор. Моя цель состояла в том, чтобы получить уникальные пары ключ-ключ. Поэтому я использую идентификаторы во втором словаре в качестве ссылки на оба. – awado