как обновить NSMutableDictionary - PullRequest
       11

как обновить NSMutableDictionary

2 голосов
/ 06 февраля 2012

У меня

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'

как мы можем обновить словарь?

Ответы [ 2 ]

5 голосов
/ 06 февраля 2012

У меня раньше было то же исключение, хотя мой словарь был изменчивым.
Позвольте мне объяснить вам мой сценарий, может быть, это поможет:
У меня было NSMutableArray из NSMutableDictionary,

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

[dict setObject:@"" forKey:@""]; <- сбой на этой линии ... </p>

поэтому я изменил свой код, как показано ниже,

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

все работало нормально :)

0 голосов
/ 07 февраля 2012

обнаружил проблему исключения, но не решен полностью

при загрузке. Мне нужно взять значения из другого словаря, так как метод, который я использовал, был неправильным, я просто назначил oldDic для mutDic, я изменил на

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

они инициализировали его

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

, что решило исключение

...