# Importer base de données



## doudou2849 (1 Février 2010)

Bonjour à toutes et à tous, 

je suis toute nouvelle dans le monde de la programmation sous Mac.
Donc par pitié ne criez pas au loup si je dis une ânerie dans mon post... 

Vu que je débute, je rencontre de nombreux problèmes bloquants dans ma réalisation d'applications avec Xcode... je souhaiterais donc avoir vos lumières !!

Voici mon idée : je souhaite créer une application Cocoa pour tout simplement afficher ma liste de DVD qui est actuellement dans un fichier Numbers. J'aimerais ensuite pouvoir naviguer dans ma liste de DVD, effectuer une recherche selon le nom du réalisateur, saisir un nouveau DVD, entr'autres...

Mais j'ai un souci : comment importer ma liste de DVD ? sous quel format ? et avec quelle méthode ? 

Merci pour votre aide et bonne journée à tous.
Vanessa


----------



## Céroce (1 Février 2010)

Bonjour Vanessa,

Pas de panique, on débute tous un jour.

Déjà, pour récuperer ta liste de DVD actuelle, le plus simple est sans doute de l'exporter au format CSV. Je pense que Numbers sait faire cela, c'est un format très courant parce qu'il est facile à lire: les colonnes sont séparées par un point-virgule, et les fins de lignes par les caractères CR-LF.

Tu peux utiliser la classe NSScanner pour décomposer chaque ligne.
Le plus difficile sera sans doute d'afficher cela dans une NSTableView, et de gérer les fichiers.
Malheureusement, on ne peut pas t'expliquer cela sur un coin de forum.

Si tu ne l'as pas déjà, je te conseille très fortement l'achat de Programmation Cocoa sous Mac OS X. Il faut avoir un minimum d'expérience pour aborder Cocoa - Objective-C, notamment la connaissance du langage C, et si possible d'un langage objet.

Un site qui t'intéressera: PommeDev


----------



## doudou2849 (1 Février 2010)

Merci Céroce pour ta réponse.

J'ai investi il y a quelques jours dans ce fameux bouquin Programmation Cocoa sous Mac OS X.
Je m'y plonge mais la tâche reste ardue pour une novice comme moi...

J'ai trouvé un tutoriel pour lire et écrire dans un fichier de données csv : http://www.macresearch.org/cocoa_for_scientists_part_xvii_representing_data_in_tables

Mais ça ne fonctionne qu'à moitié car l'application se lance mais aucune donnée n'est lue et encore moins écrite dans mon fichier ...
Mon histoire avance donc un peu, mais je ne suis pas au bout de mes peines !! 

A suivre !! 
Vanessa


----------



## Céroce (2 Février 2010)

L'exemple utilise les Bindings, qui est une technologie délicate à comprendre. Le bouquin d'Hillegass survole ce sujet (c'est un des défauts du livre).

Cependant, à la place, tu peux utiliser le concept des Data Sources d'une TableView, qui est plus facile à comprendre, et te permettra de bien assimiler le principe de la délégation, qui est courant en Cocoa. Essaie de lire tout le livre dans l'ordre et de faire tous les exercices, tu auras alors de très bonnes bases.


----------



## Nyx0uf (2 Février 2010)

Vaut mieux éviter les bindings quand on est débutant même, ça fait trop 'magique'.


----------



## [Vezøul]Numerø41 (2 Février 2010)

Le fichier cvs n'est qu'un simple fichier texte avec une délimiteur de données défini. Il te suffit juste de lire le fichier ligne par ligne et récupérer les tokens les uns après les autres et les mettre en mémoire. Pour une doc sur ce genre d'algorithme de base, cherche Tokenizer.


----------



## mpergand (2 Février 2010)

Exemple de gestion  d'un cvs dans un NSTableview ICI


----------



## doudou2849 (2 Février 2010)

Merciiiiiiiiii ! Je tente tout ça demain !
Je vais peut-être enfin arriver au bout de mes peines...
Bonne nuit à tous.
Vanessa


----------



## doudou2849 (3 Février 2010)

Bon ben je n'y arrive pas, je crois que j'ai besoin d'approfondir encore un moment les bases....

Je reste donc avec mon fichier Numbers sur les bras...
Merci à tous pour votre aide.
Vanessa


----------



## Nyx0uf (3 Février 2010)

C'est simple :

- Tu places le contenu de ton fichier dans un NSArray dans applicationDidFinishLaunching: (NSNotification*)aNotification

```
_lines = [[NSString stringWithContentsOfFile:@"/chemin/fichier/csv"] componentsSeparatedByString:@";"]
// On suppose que le NSArray est déclaré dans le .h (NSArray* _lines)
```

- Ensuite pour remplir une NSTableView faut que t'implémentes 2 méthodes :


```
-(NSInteger)numberOfRowsInTableView:(NSTableView*)aTableView
{
   return [_lines count];
}

-(id)tableView:(NSTableView*)aTableView objectValueForTableColumn:(NSTableColumn*)aTableColumn row:(NSInteger)rowIndex
{
   return [_lines objectAtIndex:rowIndex];
}
```

Bien sur y a rien de parser là, donc ça va juste t'afficher les lignes 'brutes'


----------



## tatouille (4 Février 2010)

Nyx0uf a dit:


> Vaut mieux éviter les bindings quand on est débutant même, ça fait trop 'magique'.


grosse connerie

---------- Nouveau message ajouté à 05h33 ---------- Le message précédent a été envoyé à 05h30 ----------




Céroce a dit:


> L'exemple utilise les Bindings, qui est une technologie délicate à comprendre. Le bouquin d'Hillegass survole ce sujet (c'est un des défauts du livre).



oui je plussois, et on se demande meme vue les exemples si Hillegass a bien compris les Bindings a croire qu il est trop vieux et out of the stream pour etre encore une reference sur le sujet


----------



## Céroce (4 Février 2010)

J'ai plutôt l'impression qu'Hillegass est trop occupé à d'autres choses.

Les chapitres qui étaient présents dans les éditions précédentes sont toujours de grande qualité. Ceux concernant les technos les plus récentes, telles que bindings, Core Data et Core Animation sont bâclés, et ne sont même pas des introductions suffisantes aux sujets.


----------

