NSDictionary存储冗余对象的副本 - 如何防止?

时间:2013-03-06 01:19:58

标签: nsdictionary redundancy

我构建了一些代码,使得辅助字典能够存储主字典的键。所以我可以得到一个值的关键。为了使它们具有唯一性,在两个或多个相同值的情况下,我将字典对象的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

我该如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:它不是字典的问题,而是字符串文字的问题。 @“obj1”总是给出相同的ID。要解决这个问题,我必须通过以下方式设置字典:

NSDictionary *myDict = @{@"key1": [NSMutableString stringWithFormat:@"%@",@"obj1"], @"key2": [NSMutableString stringWithFormat:@"%@",@"obj1"], @"key3" : @"x"};

注意“NSMutableString”!你需要可变对象。