Я видел эту ошибку раньше, когда пытался записать в словарь, который заполнен из списка. Если вы используете
yourMutableDictionary = [someDataSource objectForKey:@"someKey"];
Ваш словарь будет неизменным, даже если он объявлен изменяемым. Используйте вместо
yourMutableDictionary = [someDataSource mutableArrayValueForKey:@"someKey"];
и ваша проблема исчезнет, если предположить, что на самом деле является вашей проблемой. Это может быть что-то вроде:
yourMutableDictionary = [[NSDictionary alloc] init];
или
yourMutableDictionary = [NSDictionary new];
и вы просто случайно создаете неизменные объекты, что в значительной степени та же проблема, что и выше, просто другая.
Было бы неплохо увидеть код, используемый для инициализации NSMutableDictionaries.
Редактировать: Может быть, попробовать что-то вроде этого, так как мне любопытно, каковы будут результаты. Вместо использования:
[delegate.sharedData.dictFaves setObject:@"test" forKey:@"4"];
попробовать
NSMutableDictionary* dict = [[NSMutableDictionary alloc] initWithDictionary:delegate.sharedData.dictFaves];
[dict setObject:@"test" forKey:@"4"];
delegate.sharedData.dictFaves = dict;
[dict release];