Accès à une variable d'instance
Rocou
Membre
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?
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?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ici:
La méthode -columns renvoie un NSArray;
Pour obtenir la première colonne, tu dois écrire:
Il est inutile d'allouer la mémoire pour colonne, le NSArray est autoreleased.
Ha oui, mince!
Un grand merci!