Enregistrement d'un NSArray dans un fichier.

France1159

Membre confirmé
20 Mars 2010
42
4
36
Bonjour,

Je souhaite enregistrer un NSArray dans un fichier avec la méthode writeToFile: mais sans succés.
Voici mon code :

Bloc de code:
- (IBAction) enregistrerLeTableau:(id)sender
{
	if([monTableau writeToFile:@"/Users/francois/mesDepenses_save" atomically:NO] == NO) {
		NSAlert *uneAlerte = [NSAlert alertWithMessageText:@"Ecriture échouée." defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@"Mais alors pourquoi ? Je cherche encore ... :) lol"];
		[uneAlerte runModal];
	} else {
		NSAlert *uneAlerte = [NSAlert alertWithMessageText:@"Ecriture a marchée !" defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@"c'est impeccable n'est-ce pas :) "];
		[uneAlerte runModal];
	}

}

Pour la lecture au démarrage de mon programme je vois que le code est bon :

Bloc de code:
- (id)init
{
        [super init];
        
        if ((monTableau = [[NSMutableArray alloc] initWithContentsOfFile:@"/Users/francois/mesDepenses_save"]) == nil) {
                NSAlert *uneAlerte = [NSAlert alertWithMessageText:@"Impossible de trouver le fichier de sauvegarde." defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@"Le chemin est correct ?"];
                [uneAlerte runModal];
                
                [monTableau release];
                monTableau = [[NSMutableArray alloc] init];
        }
        
        return self;
}

Ma question est, est-ce que c'est le chemin qui est incorrect ?
Si oui, est-ce qu'il y a une façon de cibler internement avec Cocoa le PATH de l'utilisateur ?

Cordialement,

France1159.
 
Bloc de code:
- (void)dealloc
{
      [_data release];
      [super dealloc];
}

- (id)init
{
   if ((self = [super init])) { // alloc instance
       if (!(_data = [[NSMutableArray alloc] initWithContentsOfFile:[self filePath]])) {
              _data = [[NSMutableArray alloc] initWithCapacity:5];
              NSLog(
                   "cannot init data with file at path:%s", 
                   [[self filePath] fileSystemRepresentation]
               );
       }
   }
   return self;
}

- (NSString *)filePath
{
     NSArray *paths = NSSearchPathForDirectoriesInDomains(
              [URL="http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html#//apple_ref/doc/c_ref/NSUserDirectory"]NSUserDirectory[/URL], NSUserDomainMask, YES);
     NSString *home = [paths objectAtIndex:0];
     return [NSString stringWithFormat:@"%@/data.plist", home];
}

- (IBAction)saveData:(id)sender
{
     _saved = [_data writeToFile:[self filePath] atomically:NO];
     NSLog("%c", _saved);
}