J'ai un plist. Il dispose de plusieurs touches douzaine, chacun avec des éléments NSMutableArray:NSMutableDictionary removeObjectForKey lancer EXC_BAD_ACCESS pour un var qui n'est pas libéré
...
<key>KeyName1</key>
<array>
<string>String1</string>
<string>String2</string>
<string>String3</string>
</array>
<key>KeyName2</key>
<array>
<string>String1</string>
<string>String2</string>
<string>String3</string>
</array>
...
J'ai besoin d'enlever « String1 » pour toutes les clés. Ceci est la fonction que j'ai écrit:
void DeleteString(NSString *StringToDelete){
NSMutableDictionary *item=nil;
item = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
for (id obj in item){
NSString *removeThisObject=(NSString *)obj;
NSArray *ObjectArray = [item objectForKey:obj];
for (int i = 0; i< [ObjectArray count]; i++){
NSString *objectString = [ObjectArray objectAtIndex:i];
if([objectString isEqualToString:StringToDelete]){
NSLog(@"Remove This from Item Dictionary: %@",removeThisObject);
[item removeObjectForKey:obj];
}
}
}
[item writeToFile:filePath atomically: YES];
[item release];
}
je me suis dit qu'il serait plus facile d'enlever seulement la clé entière si elle comporte une valeur que je ne veux pas, mais la ligne: article [ removeObjForKey: obj] lance un EXC_BAD_ACCESS.
Cela n'a pas de sens pour moi parce que, si je comprends bien EXC_BAD_ACCESS signifie qu'un message a été envoyé à une méthode libérée.
Ici, 'article' n'est pas disponible, n'est-ce pas? Je n'ai aucune erreur relâchant 'item' juste quelques lignes plus bas.
Que se passe-t-il ici? Y at-il une meilleure façon de supprimer "String1" des deux clés?
Merci.
Je suis un idiot. Je ne sais pas pourquoi je n'ai pas vu ça. –