error : mutating method sent to immutable object
Bonjour à tous,
J'ai l'erreur suivante :
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'
Elle survient à cette ligne :
[theValue replaceObjectAtIndex:1 withObject:resValeur];
où : theValue est un NSMutableArray, et resValeur est un NSString.
En fait je voudrais changer la valeur qui se trouve en deuxième position de mon theValue avec resValeur (ce qui se trouve dans theValue c'est tous des string).
J'ai déjà un peut chercher sur le net (est essayer quelques conseilles trouvé par ci par là ), mais toujours nada!
Avez-vous une solution?
Merci beaucoup,
Manu
J'ai l'erreur suivante :
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'
Elle survient à cette ligne :
[theValue replaceObjectAtIndex:1 withObject:resValeur];
où : theValue est un NSMutableArray, et resValeur est un NSString.
En fait je voudrais changer la valeur qui se trouve en deuxième position de mon theValue avec resValeur (ce qui se trouve dans theValue c'est tous des string).
J'ai déjà un peut chercher sur le net (est essayer quelques conseilles trouvé par ci par là ), mais toujours nada!
Avez-vous une solution?
Merci beaucoup,
Manu
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
theValue est clairement un NSArray et pas un NSMutableArray vu l'erreur
merci pour la réponse, mais j'avait déjà vérifier et non, c'est bien un NSMutableArray theValue!
je ne comprend pas pourquoi l'erreur persiste....
Bah alors il est écrasé quelque part par un NSArray.
Le système ne se trompe jamais, et s'il dit que l'objet est immutable, c'est qu'il est immutable
Donc soit tu lui as bien affecté un NSMutableArray au début, mais tu l'as remplacé par un NSArray plus tard, soit plus probablement tu as mis un NSArray dedans dans la variable.
Ce n'est pas parce que la variable est déclarée comme étant un NSMutableArray que l'objet qu'il y a dedans est un NSMutableArray.
En effet, si tu fais alors theValue est déclaré comme NSMutableArray certes, mais tu lui affectes comme valeur un objet de type NSArray, et pas NSMutableArray.
(D'ailleurs pour ce genre de cas, il y a des chances que tu aies un warning qui te soit remonté à la compilation)
Oui, clairement, car c'est NSMutableArray qui dérive de NSArray, pas l'inverse.
merci beaucoup pour les réponses!
Vous aviez raison, j'avais mis un NSArray au lieu d'un NSMUtableArray, mais le problème est que cette faute n'étais pas dans le bout de code que je continue à contrôler mais bien avant (car mon theValue est une copie d'un NSMutableArray d'une autre méthode).
Donc, merci encore! Et désolé pour le dérangement pour une erreur aussi bête!!
Manu