Метод мутации отправляет неизменный объект - PullRequest
0 голосов
/ 23 сентября 2011

Это фрагмент кода, в котором я получаю сообщение об ошибке:

//sourceArray is a NSMutablearray  
NSMutableDictionary *dayOfWeekDictionary= [sourceArray objectAtIndex:indexpath.row];  
[dayOfWeekDictionary setObject:[NSNumber numberWithBool:YES] forKey:@"isSelected"];//line 2  

Что я узнал по поиску в Google, так это то, что есть некоторые вещи в назначении неизменяемого объекта в изменяемый объект.

Я получаю сообщение об ошибке в строке 2. Любые предложения?

Ответы [ 2 ]

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

Если [sourceArray objectAtIndex:indexpath.row] возвращает неизменный словарь, простое присвоение его переменной типа NSMutableDictionary * автоматически не преобразует его в изменяемый словарь.Вместо этого вы можете написать это:

NSMutableDictionary *dayOfWeekDictionary= [NSMutableDictionary dictionaryWithDictionary:[sourceArray objectAtIndex:indexpath.row]];

Используя +[NSMutableDictionary dictionaryWithDictionary:], вы получите изменяемый словарь, основанный на другом словаре (который может быть как изменяемым, так и неизменным).Обратите внимание, что у вас нет этого словаря, поэтому вам не нужно его выпускать.Также обратите внимание, что это не тот же объект словаря, что и тот, который хранится в массиве.Если вам нужно, чтобы и массив, и dayOfWeekDictionary были одним и тем же словарем, вам следует добавить изменяемый словарь в массив.

0 голосов
/ 23 сентября 2011

Вы уверены, что есть экземпляр NSMutableDictionary в [sourceArray objectAtIndex:indexpath.row]?

Я предлагаю поставить точку останова в строке 2 и проверить содержимое dayOfWeekDictionary.

AND

В своем комментарии вы устанавливаете экземпляр NSMutableArray в переменную dayOfWeekDictionary типа NSMutableDictionary, если вы попытаетесь вызвать [dayOfWeekDictionary setObject:[NSNumber numberWithBool:YES] forKey:@"isSelected"];, приложение завершится с unrecognized selector sent to instance.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...