Я только начал прыгать в сферу Objective-C и постепенно получаю все это. Я работал над разархивированием файла, который был NSMutableArray, а затем инициализировал в моей модели с этим массивом. Массив заполнен различными NSMutableDicationary's. Из того, что я видел, он добавит эти словари как неизменяемые, поэтому я скопировал обычные и поместил их в изменяемый и удалил старый. Похоже, что это решение подходит для всех случаев, кроме самого первого.
Я в недоумении, почему это будет работать для всех, кроме первого.
Вот как я все это инициализирую
-(id) initWithList:(NSMutableArray *)savedList
{
self = [super init];
if (self)
{
int size=0;
serverList=[[NSMutableArray alloc] initWithArray:savedList copyItems:YES];
size=[serverList count];
for(int i=0;i<size;i++)
{
loginList=[NSMutableDictionary dictionaryWithDictionary:[serverList objectAtIndex:i]];
[serverList addObject:loginList];
[serverList removeObjectAtIndex:i];
}
}
return self;
}
Вот код, который выдает ошибку. Значение считывается из флажка в табличном представлении и передается здесь для изменения значения.
-(void)setMount:(int)row value:(NSNumber*)boolAsNumber
{
[[serverList objectAtIndex:row] setObject:boolAsNumber forKey:@"mountshare"];
}
Вот ошибка, которая появляется, когда я пытаюсь изменить первый элемент
2010-12-01 13:38:54.445 Network Share[35992:a0f] *** -[NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
Спасибо за вашу помощь. Если есть лучший способ, пожалуйста, дайте мне знать.