2009-08-26 5 views
0

En espérant que quelqu'un puisse m'aider avec cela car j'ai fait quelques scratches & en cherchant Je continue à négliger quelque chose d'évident ... J'ai défini un type de données énuméré simple:Impossible d'accéder à un type de données énuméré à partir d'une autre classe

typedef enum { 
    kLow = -1, 
    kMid, 
    kHigh 
} MyMode; 

et ont introduit une variable d'instance de ce type dans mon ClasseA:

@interface ClassA : UIView { 
    MyMode myMode; 
} 
@property (nonatomic) MyMode myMode; 
@end 

Et puis est synthétisé mon Mode dans le @implementation. Maintenant, dans une autre classe je référence ClassA

@interface ClassB : UIView { 
    ClassA *classA; 
} 
@property (nonatomic, retain) ClassA *classA; 
@end 

Enfin, dans une méthode w/dans ClassB Je voudrais tester l'état de la propriété de ClassA Mon Mode. J'ai essayé

if (classA.myMode == kLow) 

et cela me donne l'erreur "demande de membre dans quelque chose pas une structure ou une union". Le casting n'a pas fait de différence.

if ([classA myMode] == kLow) 

me donne une méthode "No '-myMode" trouvée ".

I crois mes en-têtes et inclus sont corrects.

Répondre

1

Vous avez besoin du @interface pour ClassA avant de pouvoir vous référer aux propriétés de ClassA. En règle générale, cela signifie que vous devez #import "ClassA.h" dans ClassB.m, avant @implementation ClassB.

+0

Je suis un abruti. J'ai eu la Classe @ class; déclaration dans l'interface @ ... mais j'ai oublié l'importation dans @ mise en œuvre .. et le mettre hors de mon esprit ... garr! bien, merci! – Meltemi

Questions connexes