2010-08-17 29 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