Je viens juste de commencer à sauter dans le domaine de l'Objective-C et je commence tout doucement à l'obtenir. J'ai travaillé sur désarchiver un fichier qui était un NSMutableArray et initialiser dans mon modèle avec ce tableau. Le tableau est rempli avec divers NSMutableDicationary. D'après ce que j'ai vu, il va ajouter ces dictionnaires comme non mutables, alors je suis allé de l'avant et copié le régulier et les mettre dans un mutable et enlever l'ancien. Cette solution semble fonctionner pour tous les cas sauf le tout premier.NCSFDictionary, méthode de mutation envoyée à un objet immuable
Je ne sais pas pourquoi cela fonctionnerait pour tous, sauf le premier.
Voici comment j'initialisant tous
-(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;
}
Voici le code qui jette l'erreur, la valeur est lue d'une case à cocher dans un tableview et passé ici pour changer la valeur.
-(void)setMount:(int)row value:(NSNumber*)boolAsNumber
{
[[serverList objectAtIndex:row] setObject:boolAsNumber forKey:@"mountshare"];
}
Voici l'erreur qu'il montre quand je tente de changer le premier élément
2010-12-01 13:38:54.445 Network Share[35992:a0f] *** -[NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
Merci pour votre aide. S'il y a un meilleur moyen s'il vous plaît faites le moi savoir.
Wow merci! Cela l'explique, fonctionne comme un charme maintenant. – utahwithak
merci ... +1 son résolu un problème aussi .. :) – Rajneesh071
et j'ai répondu aussi .. en utilisant votre réponse .. :) http: // stackoverflow.com/questions/6100271/nsinternalinconsistencyexception-avec-nsuserdefaults-when-using-method-setvalue/13952939 # 13952939 – Rajneesh071