problème de déclaration?

RocouRocou Membre
07:00 modifié dans API AppKit #1
J'ai créé une classe (pas finie), voici les deux fichiers .h et .m:

//SqlDate.h
@interface SqlDate : NSObject {

IBOutlet NSTextField *ladateDeb;
IBOutlet NSTextField *ladateFin;
}

-(void)transformeDateSql;

@end
******************************


//SqlDate.m
#import "SqlDate.h"

@implementation SqlDate

- (void)transformeDateSql
{

}

@end

Les Outlets sont bien reliés à  des EditField sous IB

Mais quand j'essaie d'utiliser cette classe dans mon controlleur:

NSString *toto = [ladateDeb stringValue];

j'obtiens le message d'erreur: error:'ladateDeb' undeclareed (first use in this function)

Je n'arrive pas à  comprendre pourquoi. (le header SqlDate.h est bien importé dans mon controlleur)

Réponses

  • CeetixCeetix Membre
    07:00 modifié #2
    MJ'ai refait ton projet et chez moi ça compile tres bien.
    Tiens tu peux le télécharger là 
  • RocouRocou Membre
    07:00 modifié #3
    dans 1234455319:

    MJ'ai refait ton projet et chez moi ça compile tres bien.
    Tiens tu peux le télécharger là 

    Merci pour le test. Effectivement ça compile bien.
    En fait mon projet contient les fichiers sources suivant:

    SqlDate.h
    SqlDate.m
    Controleur.h
    Controleur.m

    Et c'est dans Controleur.m que j'ai cette ligne qui ne se compile pas:
    NSString *toto = [ladateDeb stringValue];



  • CeetixCeetix Membre
    07:00 modifié #4
    Arf ta pris quoi comme projet?
  • AliGatorAliGator Membre, Modérateur
    07:00 modifié #5
    Ben heu c'est normal
    tu essayes d'utiliser la variable laDateDeb... dans le code de ton Controlleur. Or ton controller ne connais pas cette variable : ce n'est ni une variable que tu as déclarée localement dans ta méthode dans laquelle tu mets ton code, ni une variable d'instance de ton controlleur. C'est une variable d'instance de la classe SqlDate (classe que tu as déclarée dans SqlDate.h).

    Donc il faut d'abord que tu aies un objet SqlDate d à  ta disposition, et ensuite que tu demandes [d laDateDeb] pour récupérer le NSTextField correspondant... et enfin que tu demandes sur l'objet retourné (NSTextField) sa stringValue.

    C'est comme si tu avais un chapeau contenant des papiers, et que tu essayais de demander le nom du chapeau au lieu de demander le nom d'un papier dans le chapeau...
  • CeetixCeetix Membre
    07:00 modifié #6
    Quelle belle métaphore 
  • Philippe49Philippe49 Membre
    07:00 modifié #7
    Une synecdoque, vous dis-je  ::)
  • AliGatorAliGator Membre, Modérateur
    07:00 modifié #8
    Bah oui sauf qu'on a oublié d'activer le mode "--synecdoque-translate" de gcc, du coup le compilateur n'arrive pas à  comprendre tout seul que quand on parle du chapeau, il faut qu'il comprenne qu'on parle du papier dedans :D
  • RocouRocou Membre
    07:00 modifié #9
    dans 1234459867:


    Donc il faut d'abord que tu aies un objet SqlDate d à  ta disposition, et ensuite que tu demandes [d laDateDeb] pour récupérer le NSTextField correspondant... et enfin que tu demandes sur l'objet retourné (NSTextField) sa stringValue.

    Mais oui, quel idiot je fais.
    dans 1234459867:

    C'est comme si tu avais un chapeau contenant des papiers, et que tu essayais de demander le nom du chapeau au lieu de demander le nom d'un papier dans le chapeau...

    :)

    En tout cas, merci beaucoup.
Connectez-vous ou Inscrivez-vous pour répondre.