2011-09-20 120 views
1

我正在開發一個應用程序,其中用戶添加藥品名稱和他應該採取的次數..(添加視圖呈現爲模態視圖)。我的應用程序崩潰時,將字段添加到NSDictionary

當我的NSLog從它似乎是好當我嘗試將其插入到一個字典應用程序的用戶填充值崩潰

NSString *name = [NSString stringWithString:[MedName_Field text]]; 
int times = [[times_Field text] intValue]; 

NSLog(@"%@ - %i",name,times); // <- Here it is OK. 

//create a dictionary 
NSDictionary *dic = [[NSDictionary alloc] init]; 
[dic setValue:name forKey:@"Name"]; // <- Crash! 

感謝。

回答

3

NSDictionary實例是不可變所以你不能在創建後添加/刪除任何東西。您需要使用可變的變種 - 代替的NSMutableDictionary:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; 
[dic setValue:name forKey:@"Name"]; // <- No Crash! ;) 
2

NSDictionary是不可變的,所以你不能創建它,然後添加鍵值,以它。

可以創建一個可變字典:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; 
[dic setValue:name forKey:@"Name"]; 

或添加按鍵上initinitWithObjects:forKeys:

NSDictionary *dic = [[NSDictionary alloc] 
        initWithObjects:[NSArray arrayWithObjects:name,nil] 
        forKeys:[NSArray arrayWithObjects:@"Name",nil]]; 

但因爲字典是不可變的,你不能在這之後添加密鑰。

相關問題