Accès à  une variable d'instance

RocouRocou Membre
07:41 modifié dans API AppKit #1
J'utilise le framework PGSQL pour accéder à  des données d'une base PostgreSQL

Je voudrais accéder à  une variable d'instance mais je n'y arrive pas.

Voici les headers contenant les classes:

[size=7pt]@interface PGSQLRecordset : NSObject {
void *pgResult;

BOOL isEOF;
BOOL isOpen;

long rowCount;

NSMutableArray *columns;

PGSQLRecord *currentRecord;
}

-(id)initWithResult:(void *)result;
-(PGSQLField *)fieldByIndex:(long)fieldIndex;
-(PGSQLField *)fieldByName:(NSString *)fieldName;
-(void)close;

-(NSArray *)columns;

-(PGSQLRecord *)moveFirst;
-(PGSQLRecord *)movePrevious;
-(PGSQLRecord *)moveNext;
-(PGSQLRecord *)moveLast;

-(BOOL)isEOF;

-(NSDictionary *)dictionaryFromRecord;

@end
[/size]


La seconde classe:

[size=7pt]@interface PGSQLColumn : NSObject {
NSString *name;
int index;
int type;
int size;
int offset;
}

-(id)initWithResult:(void *)result atIndex:(int)columnIndex;

-(NSString *)name;
-(int)index;
-(int)type;
-(int)size;
-(int)offset;

@end

[/size]

En pratique, quand je récupère et affiche une liste de clients avec leur adresse, je voudrais accéder au nom des colonnes (en l'occurrence "clients" et "adresse")

Dans la classe PGSQLColumn, j'ai bien la variable "name".

J'ai essayé ceci:

PGSQLRecordset *rs = [connection open:query];
if (rs != nil) {
if (![rs isEOF])
{

PGSQLColumn *laColonne;
laColonne=[[PGSQLColumn alloc] init];
laColonne = [rs columns];

NSLog(@result: %@", [laColonne name]);

 
} else
{
NSLog(@Impossible de se connecter à  la base de données);
}
  [rs close];         


ça ne fonctionne pas du tout. Où est mon erreur?

Réponses

  • CéroceCéroce Membre, Modérateur
    07:41 modifié #2
    ça ne fonctionne pas du tout. Où est mon erreur?



    Ici:

    laColonne=[[PGSQLColumn alloc] init];<br />laColonne = [rs columns];
    


    La méthode -columns renvoie un NSArray;

    Pour obtenir la première colonne, tu dois écrire:

    PGSQLColumn* laColonne = [[rs columns] objectAtIndex:0];
    


    Il est inutile d'allouer la mémoire pour colonne, le NSArray est autoreleased.

  • RocouRocou Membre
    07:41 modifié #3
    dans 1233917419:

    ça ne fonctionne pas du tout. Où est mon erreur?



    Ici:

    laColonne=[[PGSQLColumn alloc] init];<br />laColonne = [rs columns];
    


    La méthode -columns renvoie un NSArray;



    Ha oui, mince!


    dans 1233917419:

    Pour obtenir la première colonne, tu dois écrire:

    PGSQLColumn* laColonne = [[rs columns] objectAtIndex:0];
    


    Il est inutile d'allouer la mémoire pour colonne, le NSArray est autoreleased.


    Un grand merci!
Connectez-vous ou Inscrivez-vous pour répondre.