# Enregistrement d'un NSArray dans un fichier.



## France1159 (20 Juin 2010)

Bonjour,

Je souhaite enregistrer un NSArray dans un fichier avec la méthode  writeToFile: mais sans succés. 
Voici mon 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 :


```
- (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.


----------



## tatouille (21 Juin 2010)

```
- (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);
}
```


----------

