# Enregistrement de données Xcode et binding .



## Gogaule (21 Mars 2011)

Bonjour à toutes et tous .

Je ne parviens pas a enregistrer des données (NSMutableArray ) dans mes préférences et sur le bureau .

```
#import "Controller.h"

@implementation Controller

- (void)awakeFromNib
{
    prefs = [[NSUserDefaults standardUserDefaults] retain];

   
    recordsFile = [NSString stringWithString:@"~/Library/Preferences/Les Editions de la Crempse.plist"];
    recordsFile = [[recordsFile stringByExpandingTildeInPath] retain];

    
    if ( [prefs arrayForKey:@"Addresses"] != nil ) {
    records = [[NSMutableArray alloc] initWithArray:[prefs arrayForKey:@"Addresses"]];
    } else {
        records = [[NSMutableArray alloc] initWithContentsOfFile:recordsFile];
        if ( nil == records ) {
            records = [[NSMutableArray alloc] init];
        }
    }
}

- (void)saveData
{
    [records writeToFile:recordsFile atomically:YES];

    [prefs setObject:records forKey:@"Addresses"];
    [prefs synchronize];
}


- (void)dealloc
{
   
    [self saveData];
    
   
    [recordsFile release];
    [records release];
    [prefs release];

    recordsFile = nil;
    records = nil;
    prefs = nil;
    
    
    [super dealloc];
}

- (NSDictionary *)createRecord
{
    NSMutableDictionary *record = [[NSMutableDictionary alloc] init];
    
    [record setObject:[nomField stringValue] forKey:@"Nom"];
    [record setObject:[prenomField stringValue] forKey:@"Prenom"];
    [record setObject:[emailField stringValue] forKey:@"Email"];
    [record setObject:[nudetelField stringValue] forKey:@"N° de Tel"];
    [record setObject:[adresseField stringValue] forKey:@"Adresse"];
    [record setObject:[cpostalField stringValue] forKey:@"Code Postal"];
    [record setObject:[villeField stringValue] forKey:@"Ville"];

    [nomField setStringValue:@""];
    [prenomField setStringValue:@""];
    [emailField setStringValue:@""];
    [nudetelField setStringValue:@""];
    [adresseField setStringValue:@""];
    [cpostalField setStringValue:@""];
    [villeField setStringValue:@""];
    
    [record autorelease];
    return record;
}

- (IBAction)addRecord:(id)sender
{
    [records addObject:[self createRecord]];
    [tableView reloadData];
    [self saveData];
}

- (IBAction)deleteRecord:(id)sender
{
    int status;
    NSEnumerator *enumerator;
    NSNumber *index;
    NSMutableArray *tempArray;
    id tempObject;
    
    if ( [tableView numberOfSelectedRows] == 0 )
        return;
    
    NSBeep();
    status = NSRunAlertPanel(@"Attention!", @"Etes-vous sure de vouloir effacer cette entrée ?", @"OK", @"Cancel", nil);
    
    if ( status == NSAlertDefaultReturn ) {
        enumerator = [tableView selectedRowEnumerator];
        tempArray = [NSMutableArray array];
        
        while ( (index = [enumerator nextObject]) ) {
            tempObject = [records objectAtIndex:[index intValue]];
            [tempArray addObject:tempObject];
        }
        
        [records removeObjectsInArray:tempArray];
        [tableView reloadData];
        [self saveData];   
    }
}

- (IBAction)insertRecord:(id)sender
{
    int index = [tableView selectedRow];
    [records insertObject:[self createRecord] atIndex:index];
    [tableView reloadData];
    [self saveData];
}

- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
    return [records count];
}

- (id)tableView:(NSTableView *)aTableView
      objectValueForTableColumn:(NSTableColumn *)aTableColumn
      row:(int)rowIndex
{
    id theRecord, theValue;
    
    theRecord = [records objectAtIndex:rowIndex];
    theValue = [theRecord objectForKey:[aTableColumn identifier]];
    
    return theValue;
}


- (void)tableView:(NSTableView *)aTableView
        setObjectValue:(id)anObject
        forTableColumn:(NSTableColumn *)aTableColumn
        row:(int)rowIndex
{
    id theRecord;
    
    theRecord = [records objectAtIndex:rowIndex];
    [theRecord setObject:anObject forKey:[aTableColumn identifier]];
    
   
    [self saveData];
}

@end
```

Merci d'avance .


----------



## ntx (21 Mars 2011)

Déja les chemins avec des espaces à l'intérieur, mauvais plan :rateau: Si c'est ça qui pose problème, met des '\ ' au lieu de ' '


----------



## Gogaule (21 Mars 2011)

Bonsoir . 

Je ne pense pas que le problème vienne de la , car j'ai testé avec plusieurs adresses et plusieurs solutions .

Mes inter-relations sont bindées .. est-ce cela ???

Merci .

Cordialement.


----------



## tatouille (21 Mars 2011)

Gogaule a dit:


> Bonsoir .
> 
> Je ne pense pas que le problème vienne de la , car j'ai testé avec plusieurs adresses et plusieurs solutions .
> 
> ...



effectivement ton pseudo te va bien 

http://developer.apple.com/library/....html#//apple_ref/doc/uid/TP30001219-CJBEJBHH

obj-c binding

http://developer.apple.com/library/...NSUserDefaults_Class/Reference/Reference.html

ton probleme est plus gros qu'un elephant dans un couloir de 20 cm de large.


----------



## Gogaule (22 Mars 2011)

Bonjour à toutes et tous .



tatouille a dit:


> effectivement ton pseudo te va bien
> 
> http://developer.apple.com/library/....html#//apple_ref/doc/uid/TP30001219-CJBEJBHH
> 
> ...



Merci pour tes réponses éclairées tatouille .

Si je demande de l'aide c'est pour tout cela  , non ?   Je ne lit pas l'anglais .

Cordialement

Au fait mon gros problème , c'est ???


Capture décran 2011-03-21 à 20.58.59.png


----------



## Gogaule (24 Mars 2011)

Bonjour à toutes et tous .

Je bloque sur une chose que je ne parviens pas à comprendre :

Relier deux fenêtres .
Une fenêtre qui affiche des données .
Une fenêtre qui collecte les données .

Connaitriez-vous un tutoriel ?? en français .

Merci .
Cordialement.


----------



## Gogaule (26 Mars 2011)

Bonjour à toutes et tous .

Alors  , j'ai vraiment besoin de comprendre pour poursuivre mon apprentissage D).

J'enregistre bien sur mon DD un fichier plist avec @"Chose" ensuite @"Dictionary" ,@"0 item"
@"string" .... Mais aucune données transmises .. Je sèche lamentablement ..

Le nom donné a mon "enregistrement" est exact .. les noms des items aussi . J'en déduit que mon code est bon Controleur.h et Controleur.m , mais alors pourquoi ?
Les données s'affichent au bons endroits mais ne s'enregistre pas .

Si vous avez un peut de temps et la solution .. Merci d'avance .

Cordialement.


----------

