J'ai essayé d'écrire un simple programme de liste de courses, mais lorsque j'essaie de réécrire les valeurs modifiées dans un fichier plist, je ne reçois que les valeurs initiales qui étaient dans le fichier avec.writeToFile Output .plist n'écrit pas les valeurs correctes
Mon fichier plist original est un grand tableau (dataArray) de dictionnaires avec seulement deux champs dans chaque dictionnaire un bool et une chaîne lorsque vous sélectionnez un élément dans la tableview la valeur bool est modifiée pour l'élément unique le dataArray à la console je peux voir que la valeur a été changée, mon seul problème est que quand j'essaye d'écrire dataArray dans un fichier j'obtiens le fichier dans le répertoire de documents mais toutes les valeurs de bool sont toujours éteintes.
- (void)viewDidLoad {
//load from plist file
NSString *path = [[NSBundle mainBundle] pathForResource:@"OriginalChecklist" ofType:@"plist"];
self.dataArray = [NSMutableArray arrayWithContentsOfFile:path];
[super viewDidLoad];
}
- (void)viewWillDisappear:(BOOL)animated
{
NSString *documentsDirectory = [@"~/Documents/" stringByExpandingTildeInPath];
NSString *savePath = [documentsDirectory stringByAppendingPathComponent:@"Checklist.plist"];
[dataArray writeToFile:savePath atomically:YES];
NSLog(@"location information %@", savePath);
NSLog(@"dataAray contents %@=", dataArray);
}
Et comme je l'ai dit quand je sortie le résultat de la tableauDonnees à la console que je reçois les résultats suivants à partir des éléments que j'ai vérifié.
cell = <UITableViewCell: 0x3b143d0; frame = (0 0; 320 44); text = 'Water Bottle'; autoresize = W; layer = <CALayer: 0x3b14650>>;
checked = 1;
text = "Water Bottle";
cell = <UITableViewCell: 0x3b20560; frame = (0 88; 320 44); text = 'GPS'; autoresize = W; layer = <CALayer: 0x3b20610>>;
checked = 1;
text = GPS;
Si quelqu'un sait comment enregistrer les résultats modifiés dans le fichier plist, j'apprécierais beaucoup un peu d'aide.
Merci Brad
Je suis encore un peu de mal à ma demande de pouvoir créer un plist et charger les informations de cette plist dans la section viewDidLoad. Le code j'utilise au moment de vérifier le fichier d'origine et si elle n'y est pas créer un est comme suit
(void) {viewDidLoad
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"CustomChecklist.plist"];
success = [fileManager fileExistsAtPath:filePath];
NSLog(@"STATUS OF SUCCESS %@",success);
if (!success) {
NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingFormat:@"OriginalChecklist.plist"];
success = [fileManager copyItemAtPath:path toPath:filePath];
self.dataArray = [NSMutableArray arrayWithContentsOfFile:filePath];
NSLog(@"IF STATEMENT CREATING THE FILE");
}else {
self.dataArray = [NSMutableArray arrayWithContentsOfFile:filePath];
NSLog(@"IF STATEMENT READING THE FILE");
}
NSLog(@"location information %@", filePath);
[super viewDidLoad];
}
Quand je construis cette application, il construit et fonctionne ok, mais je reçois quelques avertissements NSFileManager ne peut pas répondre à -copyItemAtPath: toPath
une fois que ce sera terminé la sortie à la console semble que si elle n'a même pas vérifié le fichier ou créé celui à lire.
2010-07-06 16: 22: 42,803 CampingChecklist [400: 207] ETAT DE LA RÉUSSITE (null) 06/07/2010 16: 22: 42,805 CampingChecklist [400: 207] if lecture du fichier 2010 -07-06 16: 22: 42.814 CampingChecklist [400: 207] informations sur la localisation/Utilisateurs/Brad/Bibliothèque/Application Support/iPhone Simulator/3.1.3/Applications/E7074D5A-3E7A-4D2E-9F92-82B1A04873F8/Documents/CustomChecklist. plist
Et évidemment, comme il n'y a rien dans le fichier, quand il essaie d'économiser sur la sortie de l'application, il ne crée aucun fichier dans le chemin spécifié.
Si quelqu'un peut faire la lumière sur ce problème, alors je l'apprécierais beaucoup.
Merci Brad