2010-08-17 49 views
0

我有一个nsmutabledictionnary,当我使用setObject:forKey:与一个nsstring键时它的作品,当我尝试objectForKey,但如果我把一个nsmutablestring在SetObject:forKey:方法的关键参数,它是当我调用objectForKey时,它不工作,它返回在字典中的最后一个对象...nsmutabledictionnary与nsmutablestring forkey

回答

2

你应该知道,在添加它之前的NSDictionary(和的NSMutableDictionary)副本的关键 - 因此,如果您使用的NSMutableString作为重点,然后修改相同的字符串,在数据库中的关键仍然有旧的价值。这是有原因的 - NSDictionary中的关键字应该始终是静态的,因为它实际上是用于检索关联值的哈希。

+0

所以我能做些什么,我尽量\t 的NSString * myString的= [[NSString的页头] initWithString: @“fr_”stringByAppendingString:myMutableString]]; 并把myString放在关键参数中,但这不起作用... – alex 2010-08-17 18:03:46

+0

确定它的工作原理! thanx为您的答案中的伟大解释! – alex 2010-08-17 18:11:02

+0

相应的CFDictionary函数不会复制密钥。我使用它,所以我不需要换行(例如)NSURLConnections来使用它们作为键。只对不覆盖' - (NSUInteger)hash'的对象执行此操作。 – 2010-08-17 23:58:41

0

如果一个正常的字符串工作,但可变的不工作,那么为什么你不只是添加另一行代码和转换它到一个正常的字符串?

NSString *keyValue = mutableStringVariable;

+0

如果你这样做,你的字符串键值只要点mutableStringVariable对象,所以你必须在最后同一个对象 – alex 2010-08-17 17:58:20