J'ai deux init init avec deux fichiers plist différents, les fichiers plist sont dans le dossier de documents non inclus dans le bundle et sont donc éditables.Tableau de données de mise à jour de plist
progress = [[NSMutableArray alloc] initWithContentsOfFile:[self progressFilePath]];
easy = [[NSMutableArray alloc] initWithContentsOfFile:[self easyFilePath]];
le plist progrès est vide insted la facilité est:
<array>
<dict>
<key>TitleEN</key>
<string>Hunter</string>
<key>Status</key>
<integer>0</integer>
<key>Image</key>
<string></string>
</dict>
</array>
Maintenant, à mon avis, j'ai un tableView chargé avec facile et je voudrais que la presse élément de la ligne, si son statut est 0 il va à la plist de progrès, définir l'objet pour la clé Image dans dog.png dans progress.plist également mis l'objet 0 pour l'état de la clé, mais dans le facile. Je l'ai fait tout avec ceci:
NSNumber *status = [[easy objectAtIndex:indexPath.row] objectForKey:@"Status"];
if ([status intValue] == 0) {
[progress addObject:[easy objectAtIndex:indexPath.row]];
int progresstot = [progress count];
for (int i=0; i<progresstot; i++) {
if ([[progress objectAtIndex:i] objectForKey:@"TitleEN"] == [[easy objectAtIndex:indexPath.row] objectForKey:@"TitleEN"]) {
[[progress objectAtIndex:i] setObject:@"dog.png" forKey:@"Image"];
}
}
[progress writeToFile:[self progressFilePath] atomically:YES];
[[easy objectAtIndex:indexPath.row] setObject:[NSNumber numberWithInt:1] forKey:@"Status"];
[easy writeToFile:[self easyFilePath] atomically:YES];
}
Tout fonctionne bien, mais je ne peux pas comprendre pourquoi à la fin de cette méthode, j'ai mon progress.plist avec mon élément avec dog.png mais aussi je dog.png sur le facile. (Le statut est seulement mis à jour sur facile et fonctionne bien mais dog.png sur les deux). Tout le monde peut m'aider? Je ne peux pas comprendre ce qui ne va pas.
Compris! Comment puis-je copier l'objet facile dans le tableau de progression? – Tortuga
Eh bien, puisque vous travaillez avec l'objet objectif-C classique (dérivé de NSObject), vous pouvez juste faire * NSObject * itemToAdd = [[easy objectAtIndex: indexPath.row] copy]; [progress addObject: itemToAdd]; [itemToAdd release]; * Nous avons publié itemToAdd, parce que le tableau va le conserver et nous ne voulons pas fuir * copié * article après – makaron
Cela ne fonctionne pas, me montre cette erreur. 'terminaison application en raison d'exception non interceptée NSInternalInconsistencyException, raison: - [__ NSCFDictionary setObject: forKey:]: méthode de mutation envoyée à objet immuable' Aussi je ne peux pas libérer * itemToAdd parce que j'utilise ARC – Tortuga