【发布时间】:2013-03-06 01:19:57
【问题描述】:
我已经构建了一些代码来制作辅助字典来存储主字典的键。所以我可以得到一个值的键。为了使它们唯一,如果有两个或多个相同的值,我将字典对象的 ID 存储为键,将它们的键存储为对象。
但是当两个对象具有相同的值时,它们也具有相同的 ID。因此我无法检索两个不同的密钥:
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" 始终指向同一个对象,无论它在程序中的什么位置使用。
-
实际上我的意思是 ID。我的目的是获得唯一的值键对。所以我使用第二个字典中的 ID 作为对两者的引用。