2011-09-20 80 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]]; 

但因为字典是不可变的,你不能在这之后添加密钥。

相关问题