Recup des fichiers d'un dossier sous forme de array

mai 2005 modifié dans API AppKit #1
Hello, 'core moi  :o
Tout est ds le titre, je voudrai savoir s'il y a un moyen simple de récupérer le nom de chacun des fichiers contenus ds un dossier et de transformer la liste de fichier sous forme d'un Array contenant plusieur mutableDico
comme ceci :
&lt;array&gt;<br />	&lt;dict&gt;<br />		&lt;key&gt;etat&lt;/key&gt;<br />		&lt;data&gt;<br />		&lt;/data&gt;<br />		&lt;key&gt;file&lt;/key&gt;<br />		&lt;string&gt;&lt;/string&gt;<br />	&lt;/dict&gt;<br />	&lt;dict&gt;<br />		&lt;key&gt;etat&lt;/key&gt;<br />		&lt;data&gt;&lt;/data&gt;<br />		&lt;key&gt;file&lt;/key&gt;<br />		&lt;string&gt;<br />		&lt;/string&gt;<br />	&lt;/dict&gt;<br />&lt;/array&gt;


Merci d'avance !  o:)

Réponses

  • mai 2005 modifié #2
    Effectivement, il y a un moyen simple.

    Regarde au niveau de NSFileManager, tu as la méthode [tt]- (NSDirectoryEnumerator *)enumeratorAtPath:(NSString *)path[/tt], que tu peux utiliser comme un énumérateur normal puis tu crées les dicos dans la boucle de l'énumérateur. Si tu veux éviter d'avoir les sous éléments du dossier, tu envoies [tt] skipDescendents[/tt] à  l'énumérateur avant de commencer la boucle.


    [size=7pt]Désolé c'était plus fort que moi. Ceci dit, j'ai aussi répondu à  la question que tu voulais poser, surligne ou cite ce post et tu auras ta réponse. [/size]
  • 21:14 modifié #3
    Mouais ok ça c'est de la réponse  >:D
  • BruBru Membre
    21:14 modifié #4
    dans 1115756546:

    Mouais ok ça c'est de la réponse  >:D


    Enfin, bon...

    Peut être que ça "c'est de la réponse", mais ça c'est aussi de la question !

    Car "transformer la liste de fichier sous forme d'un Array contenant plusieur mutableDico", ça aussi, c'est pas clair...

    Et tu mets quoi ton ton dictionnaire ? une clé pour le nom du fichier ? Et les autres clés, elles contiennent quoi ?

    .
  • CoreCore Membre
    21:14 modifié #5
    peut etre une piste :

    NSFileManager :
    - (NSArray *)directoryContentsAtPath:(NSString *)path

    doit y avoir moyen aussi avec NSDirectoryEnumerator
  • Eddy58Eddy58 Membre
    21:14 modifié #6
    Ca commence à  devenir trollesque ici...:P
  • 21:14 modifié #7
    Bon, j'ai compris je remets tout le texte en noir...
  • CoreCore Membre
    21:14 modifié #8
    dans 1115821257:

    Bon, j'ai compris je remets tout le texte en noir...


    j'avais pa vu  ;D
  • 21:14 modifié #9
    lol ok dsl j'avais pas capté que tu avais mis la réponse en en blanc  ???
    Merki vais voir ce que je peux en tirer  :p
  • 21:14 modifié #10
    Hello,
    J'ai récupérer le contenus d'un dossier grâce à  la méthode de Core.
    Le truc chiant c'est que je veux afficher ces noms de fichiers dans un tableau avec une colonne identifier "fileName" et une autre qui contiendra une NSImage avec comme ident "etat".
    Le but de mon app est en fait de surveiller les fichiers contenus dans un dossier, s'il l'un d'entre eux est déplacé dans un dossier spécifié "Good", ou bien dans le dossier "Bad" ou encore "Tocheck".
    Le NSImage contenu ds la colonne etat changera en fonction du dossier dans lequel a été déplacé le ou les fichiers.
    Donc pour tout ça je pense que j'ai besoin d'une Array qui contient des Dico avec dans chacuns des dico, une key : "fileName" et une valeur string "nomDuFichier" puis une autre key "etat" pour le NSImage.
    Le problème c'est que cette méthode
    - (NArray *)directoryContentsAtPath:(NSString *)path
    
    crée un NSArray avec les key qui deviennent des index :( c'est po vraiment cool.
    Je demande pas la solution car j'aimerai faire ça de moi-même et je trouves que j'en demande déjà  bcp sur ce forum ! Tout ce que je voudrais c'est quelque chose qui pourrait me mettre sur la piste, afin de gérer convenablement mon NSTableView...
    J'espère avoir été assez compréhensif :p
    Merci encore !
  • 21:14 modifié #11
    Le problème c'est que cette méthode .../skip/... crée un NSArray avec les key qui deviennent des index  c'est po vraiment cool.


    J'ai vraiment du mal à  comprendre cette phrase... Tu ne pourrais pas la reformuler correctement? (en une seule phrase, j'y tiens, savoir formuler une question est déjà  y répondre).
  • CoreCore Membre
    21:14 modifié #12
    Si tes 3 dossiers sont "fixes" et que l'appartenance à  l'un d'entre eux détermine l'icône état,

    tu pourrais lister tour à  tour ces dossiers et remplir un NSArray et "mémoriser" via des NSRange, par exemple, quel fichier est good , bad ou toCheck
  • Eddy58Eddy58 Membre
    21:14 modifié #13
    Mon point de vue côté conception : S'il n'y a que les données Etat et Nom de Fichier à  prendre en compte, je ferais plutôt l'inverse, je mettrais 3 colonnes pour les différents états, avec les noms de fichiers dans les rows, ce qui permettrait de faire appel à  des fonctions de tri et pourquoi pas de drag&drop dans la tableview pour faire des changements rapides dans les tiroirs. Côté modèle, je verrais 3 NSMutableArray (1 par état), initialisés à  l'aide de la méthode directoryContentsAtPath. :)
  • CoreCore Membre
    21:14 modifié #14
    Eddy a raison

    3 NSMutableArray pourront permettre l'ajout, la suppression, et le changement d'état facilement.
  • mai 2005 modifié #15
    Je vois pas trop comment faire  :(
    En fait si je crée 3 NSMutableArray (3 par état comme di Eddy), initialisés à  l'aide de directoryContentsAtPath, ça voudrait dire que j'initialise une array pour chaque dossier à  savoir : toCheck, Bad et Good.
    C'est bien beau mais imaginons que j'ai plusieurs dossiers de "départ" à  gérer et dont le contenu doit aller aussi dans l'un des 3 dossier de destination. Je pourrais fonctionner avec un NSOutlineView (je sais pas comment ça marche) mais pour l'instant c'est pas mon but.
    Si je ne gère qu'un dossier "départ", avec les 3 dossiers de destination toCheck bad et good, je vais d'abord bosser avec un NSTableView.. Eddy me dit de faire 3 colonnes pour l'état et donc +1 colonne pour le nom du fichier ???
    C'est assez chiant, mais en fait je veux simplement une colonne avec le nom des fichiers puis une colonne d'état (afin de faire plus discret).
    En fait ce ptit programme servira à  gérer les vérification des fichiers PDF de PitStop Server, afin de simplifier la vie à  certaines entreprises. Et certains auront sûrement plusieurs dossiers "source" à  gérer mais auront forcément les 3 dossiers de destination fixes.

    Mon but pour le moment est donc de trouver un moyen de décortiquer cette NSArray, initialisée avec directoryContentsAtPath, en plusieurs NSDico (1 dico pour chaque fichiers).
  • Eddy58Eddy58 Membre
    21:14 modifié #16
    Ok, si tu as besoin de faire discret, autant revenir à  ta première idée, deux colonnes, l'une pour les noms de fichiers et l'autre pour l'état.
    Mais au lieu d'utiliser un dico, pourquoi ne pas utiliser une classe modèle dans ce genre là  : :)
    [tt]
    @interface FileState : NSObject <NSCoding>
    {
        NSString *fileName;
        int fileState;
    }
    [/tt]

    Avec un state pouvant prendre 3 valeurs différentes. Je trouve qu'il est plus pratique et plus propre de travailler ainsi...
  • 21:14 modifié #17
    Je ne pense pas avoir suffisamment de connaissance pour faire ce que tu viens de proposé  :o
  • Eddy58Eddy58 Membre
    21:14 modifié #18
    Il suffit d'appliquer le B-A BA du MVC... :)
    - M : Une classe modèle pour structurer les donnees dont tu as besoin, ici une classe pour les infos fichiers.
    - V : Une tableview pour afficher les données de ta classe modèle.
    - C : Un controleur, faisant ici le lien entre la tableview et la classe modèle. Ce controleur a deux fonctions principales :
    *Gérer ton array en ajoutant, retirant ou modifiant des objets de ta classe modèle dans celui-ci.
    *Gérer les datas sources et autres méthodes delegates de la tableview, en les faisant pointer sur ton array.
    Le controleur s'occupe aussi d'autres choses comme l'archivage/desarchivage, initialisations, gui d'édition,...mais une fois les deux gros points ci-dessus fonctionnels, le reste s'implémente au fur et à  mesure du developpement.

    Dans l'immédiat, je n'ai pas en tete de tuto sur ce type d'application, des que je trouve un moment, si tu veux, je te fais un exemple simple, pour le principe.
  • 21:14 modifié #19
    Yep si ça ne te dérange po  o:) merci !
    En attendant jvais essayer de mon côté
  • CoreCore Membre
    21:14 modifié #20
    Une traduction de Project:Omega sur le MVC

    http://www.projectomega.org/article.php?lg=fr&php=tuts_apparch&p=1
Connectez-vous ou Inscrivez-vous pour répondre.