Partage
  • Partager sur Facebook
  • Partager sur Twitter

[iPhone] probleme property

Sujet résolu
    18 mars 2012 à 12:21:51

    Bonjour, je suis actuellement en train d'apprendre a coder en objective C mais je suis en face d'un problème que je n'arrive pas a résoudre étant donné que je débute, si quelqu'un pouvait m'aider ce serait sympa.
    Voici le code:

    #import "calculatorBrain.h"

    @interface calculatorBrain()
    @property (nonatomic, strong) NSMutableArray *operandStack;

    @end

    @implementation calculatorBrain

    @synthesize operandStack = _operandStack;

    -(NSMutableArray *)operandStack
    {
    if (_operandStack == nil) _operandStack = [[NSMutableArray alloc] init];

    return _operandStack;
    }


    - (void)pushOperand: (double)operand;
    {
    [self.operandStack addObject:[NSNumber numberWithDouble:operand]];
    }

    -(double)popOperand
    {
    NSNumber *operandObject = [self.operandStack lastObject];
    if(operandObject) [self.operandStack removeLastObject];
    return [operandObject doubleValue];
    }

    - (double)performOperation:(NSString *)operation;
    {
    double result = 0;

    if([operation isEqualToString:@"+"]) {
    result = [self popOperand] + [self popOperand];

    }

    [self.pushOperand:result]

    return result;
    }
    @end


    et j'ai cette erreur:
    property pushOperand not found on object of type "calculator brain".
    si quelqu'un pouvait m'aider, merci!
    • Partager sur Facebook
    • Partager sur Twitter
      18 mars 2012 à 12:31:48

      Le message qui suit est une réponse automatique.
      Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
      Nous sommes néanmoins ouvert à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


      Merci d'utiliser les balises de code


      Bonjour,

      Les forums du Site du Zéro disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
      Tu as posté un code source sans utiliser cette fonctionnalité. Pourrais-tu éditer ton message afin d'ajouter ces balises ? Pour cela, sélectionne ton code à colorer et utilise le bouton Image utilisateur afin de choisir la coloration adaptée. Veille à bien choisir le langage de programmation afin que la coloration soit pertinente.

      De plus, veille à ce que ton code soit correctement indenté.

      Afin de ne pas surcharger le sujet, ne poste pas ton code coloré dans un nouveau message mais édite le premier (grâce au bouton Image utilisateur).

      Cela aura pour effet de "colorer" ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses.

      Voici un exemple de code non coloré (mauvais exemple) :
      int main(int argc, char *argv[])
      {
      long choixOperation;

      printf("Choisissez l'operation a effectuer");
      /* etc. */
      }

      Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :
      int main(int argc, char *argv[])
      {
          long choixOperation;
      
          printf("Choisissez l'operation a effectuer");
          /* etc. */
      }
      


      C'est plus clair n'est-ce pas ? ;)

      Pour plus d'information à ce sujet, tu peux lire le tutoriel général sur le zCode.

      Merci de ta compréhension. :)
      • Partager sur Facebook
      • Partager sur Twitter
        19 mars 2012 à 11:13:57

        #import "calculatorBrain.h"
        
        @interface calculatorBrain()
        @property (nonatomic, strong) NSMutableArray *operandStack;
        
        @end
        
        @implementation calculatorBrain
        
        @synthesize operandStack = _operandStack;
        
        -(NSMutableArray *)operandStack
        {
        if (_operandStack == nil) _operandStack = [[NSMutableArray alloc] init];
        
        return _operandStack;
        }
        
        
        - (void)pushOperand: (double)operand;
        {
        [self.operandStack addObject:[NSNumber numberWithDouble:operand]];
        }
        
        -(double)popOperand
        {
        NSNumber *operandObject = [self.operandStack lastObject];
        if(operandObject) [self.operandStack removeLastObject];
        return [operandObject doubleValue];
        }
        
        - (double)performOperation:(NSString *)operation;
        {
        double result = 0;
        
        if([operation isEqualToString:@"+"]) {
        result = [self popOperand] + [self popOperand];
        
        }
        
        [self.pushOperand:result]
        
        return result;
        }
        @end
        


        c'est plus clair comme cela ! ;)


        Concernant ton problème :
        - @interface et @implementation ne doivent pas être dans le même fichier !
        (L'un dans le .h l'autre dans le .m)

        Bonne journée
        • Partager sur Facebook
        • Partager sur Twitter
          19 mars 2012 à 12:28:08

          Bonjour,

          Si tu fais [self.machin] tu considères que "machin" est une variable.
          Si tu veux appeler une méthode, il te suffit de faire : [self machin].

          Donc ici, remplace [self.pushOperand:result] par : [self pushOperand:result], d'autant plus que tu le fais déjà avec la méthode popOperand, cela aurait dû te mettre la puce à l'oreille.
          • Partager sur Facebook
          • Partager sur Twitter
            19 mars 2012 à 17:11:30

            Tout d'abord, merci Thouny c'est effectivement beaucoup plus clair comme ca mais vu que je n'ai pas encore trop l'habitude de colorer mes codes il faut que je prenne cette habitude ^^ et effectivement j'ai fait une erreur un peu bête...
            Et Bluerat merci beaucoup et je dois dire que j'ai pas vraiment fait attention c'est pour ca que j'avais pas trouvé... En tout cas merci beaucoup problème résolu!
            • Partager sur Facebook
            • Partager sur Twitter

            [iPhone] probleme property

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown