мое приложение вылетает при добавлении значений из полей в NSDictionary - PullRequest
1 голос
/ 20 сентября 2011

Я занимаюсь разработкой приложения, в котором пользователь добавляет название лекарства и количество раз, которое он должен принимать .. (представление добавления представлено как модальное представление).

когда я 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!

Спасибо.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2011

NSDictionary экземпляры неизменяемы , поэтому вы не можете ничего добавлять / удалять после их создания. Вам нужно использовать изменяемый вариант - вместо NSMutableDictionary:

NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
[dic setValue:name forKey:@"Name"]; // <- No Crash! ;)
2 голосов
/ 20 сентября 2011

NSDictionary не является изменяемым, поэтому вы не можете его создать, затем добавьте в него ключи и значения.

Либо создайте изменяемый словарь:

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

Или добавьте свои ключи на init с помощью initWithObjects:forKeys::

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

Но после этого вы не можете добавить ключи, потому что словарь является неизменным.

...