IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

Remplissage d'un NSTableView à plusieurs colonnes


Sujet :

Objective-C

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Remplissage d'un NSTableView à plusieurs colonnes
    Bonjour à tous,

    J'aurais besoin d'une petite aide pour remplir un NSTableView.

    Donc je bosse actuellement sur un petit projet dans lequel j'ai besoin d'afficher une liste d'étudiants (comprenant un id, une promo, un first name, et un last name) récupérée à partir d'un fichier CSV.

    J'ai créé le parseur jusque là tout fonctionne bien. Par contre lorsqu'il s'agit d'afficher le résultat dans une NSTableView, je bloque

    Bon passons direct au code pour pas perdre de temps.

    Mon interface du controller est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #import <Foundation/Foundation.h>
    #import "ParseCsv.h"
     
    @interface CheckStatsViewController : NSObject {
        IBOutlet NSTableView *checkStatsTable;
        NSMutableArray *studentsList;
    }
     
    - (NSUInteger)numberOfRowsInTableView:(NSTableView *)checkStatsTable;
    - (id)tableView:(NSTableView *)checkStatsTable objectValueForTableColumn:(NSTableColumn *)checkStatsTableColumn row:(NSInteger)i;
     
    @end
    Et son implémentation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #import "CheckStatsViewController.h"
     
    @implementation CheckStatsViewController
     
    - (id)init
    {
        self = [super init];
        if (self) {
            studentsList = [[NSMutableArray alloc] init];
     
            NSString *idstudent=@"ID Student",*grade=@"Grade",*lastName=@"Last Name",*firstName=@"First Name";
            NSArray *csvKeys = [[NSArray alloc] initWithObjects:grade,idstudent,lastName,firstName,nil];
     
            ParseCsv *studentListCsv = [[ParseCsv alloc] initWithPath:@"/Users/****/Desktop/StudentList.csv"]; //Chemin temporaire
            [studentListCsv parseCsv];
            NSInteger i=0;
            for (i=0; i<[studentListCsv.parsedCsv count]; i++){
                NSMutableDictionary *student = [[NSMutableDictionary alloc] initWithObjects:[studentListCsv.parsedCsv objectAtIndex:i] forKeys:csvKeys];
                [studentsList addObject:student];
            }
        }
        return self;
    }
     
    - (NSUInteger)numberOfRowsInTableView:(NSTableView *)checkStatsTable
    {
        return [studentsList count];
    }
     
    - (id)tableView:(NSTableView *)checkStatsTable objectValueForTableColumn:(NSTableColumn *)checkStatsTableColumn row:(NSInteger)i
    {
        id theRecord, theValue;
        NSParameterAssert(i >= 0 && i < [studentsList count]);
        theRecord = [studentsList objectAtIndex:i];
        theValue = [theRecord objectForKey:[checkStatsTableColumn identifier]];
        return theValue;
    }
     
    - (void)dealloc
    {
        [super dealloc];
        studentsList = nil;
        [studentsList release];    
    }
     
    @end
    La liaison data-source dans le .xib a aussi été mise en place.

    Lorsque je fais un NSLog(@"%@",studentsList); juste après la boucle for de mon init, j'obtient un tableau de la forme :

    (
    {
    "First Name" = FName_student1;
    Grade = Grade_student1;
    "ID Student" = id_student1;
    "Last Name" = LName_student1;
    },
    {
    "First Name" = FName_student2;
    Grade = Grade_student2;
    "ID Student" = id_student2;
    "Last Name" = LName_student2;
    }
    )
    Identique à la doc Apple, mais impossible d'afficher les résultats ben rangés par lignes et pas colonnes ...


    Je vous remercie d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Avez-vous bien initialisé les "identifier" des colonnes dans Interface Builder ?

    Étant donné que vous les utilisez comme "key" dans le hash (NSDictionary) qui représente le "student" il faut que ces identifiers soient strictement identiques à vos clés du dictionnaire : "First Name" , Grade, "ID Student", "Last Name"
    (et évidemment que vous ne les localisiez pas si vous avez plusieurs langues dans votre projet…)

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Désolé pour le temps de réponse, je suis en Chine avec quelques difficultés à trouver un accès internet

    Donc oui mes "identifiers" sont bien initialisés exactement comme mes "keys", je n'arrive vraiment pas à trouver mon erreur

Discussions similaires

  1. Plusieurs colonnes
    Par mpat dans le forum ASP
    Réponses: 2
    Dernier message: 05/01/2005, 10h51
  2. Requête à plusieurs colonnes avec la fonction COUNT
    Par zigune dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/11/2004, 10h43
  3. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22
  4. Remplacer plusieurs colonnes par un 'alias'
    Par zestrellita dans le forum Langage SQL
    Réponses: 7
    Dernier message: 22/04/2004, 16h51
  5. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo