2012-02-06 44 views
2

如何更新的NSMutableDictionary

NSMutableDictionary *mutDic; 

其加載與其他NSMutableDictionary 從提示的一些值我試圖更新它的值

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
    [self.mutDic setValue:[[alertView textFieldAtIndex:0] text] forKey:@"lname"]; 
} 

,但我得到這個例外

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object' 

我們如何更新字典?

+0

崩潰日誌說你的字典是不是可變初始化它。你能告訴我們你如何分配/初始化字典嗎? – 2012-02-06 08:18:44

+0

如果您在@property中有'copy',則用'retain'或'strong'替換它。複製總是創建不可變的對象。 – 2012-02-06 08:26:22

回答

5

即使我的字典是可變的,我之前也有同樣的例外。
讓我解釋一下我的情況給你,可能會有所幫助:
我有NSMutableDictionaryNSMutableArray

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
dict = [array objectAtIndex:0]; 

[dict setObject:@"" forKey:@""]; < - 這是崩潰的這條線......

所以我改變我的代碼如下,

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:[array objectAtIndex:0]]; 

它工作得很好:)

0

發現異常問題,但不能完全解決

負載我需要從其他字典取值爲我所用的方法是錯誤的,我只是分配oldDic到mutDic,我改

self.mutDic = [[[NSMutableDictionary alloc] initWithDictionary:manager.oldDic] retain]; 

他們通過

self.oldDic = [[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"F Name",@"fname",@"L Name",@"lname", nil ]retain]; 

是解決異常

相關問題