我正在开发一个应用程序,其中用户添加药物名称和他应该服用的次数..(添加视图显示为模态视图)。
当我在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!
感谢。
答案 0 :(得分:3)
NSDictionary
个实例不可变,因此您无法在创建后添加/删除任何内容。您需要使用可变变量 - NSMutableDictionary:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:name forKey:@"Name"]; // <- No Crash! ;)
答案 1 :(得分:2)
NSDictionary
不可变,因此您无法创建它,然后向其添加键和值。
创建一个可变字典:
NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:name forKey:@"Name"];
或者使用init
{/ 1>}在initWithObjects:forKeys:
上添加密钥
NSDictionary *dic = [[NSDictionary alloc]
initWithObjects:[NSArray arrayWithObjects:name,nil]
forKeys:[NSArray arrayWithObjects:@"Name",nil]];
但是你不能在此之后添加密钥,因为字典是不可变的。