2010-09-23 7 views
0

Je rencontre des problèmes avec un programme que j'essaie de réaliser en Objective-C.Expression attendue avant ')' token

J'ai une méthode que je suis essayant dans mon MainViewController.m qui est comme suit.

- (void)updateLabels:(NSString *)text :(BOOL)isOn; 
{ 
[self setNameLabel:(text *); 
if (isOn) 
[self setOnLabel:(ON *); 
else 
    [self setOnLabel:(OFF *); 
} 

Mon objectif devrait être évident à partir de ce code. Je fais problingly quelque chose de terriblement mal pour obtenir le message d'erreur Expected expression before ')' token.

J'apprécierais n'importe quelle aide!

Répondre

3

Cela ressemble plus à ce que vous essayez de faire, qui est assigner du texte à une étiquette, puis bascule si son ON ou OFF

#define ON YES 
#define OFF NO 
    - (void)updateLabels:(NSString *)text isOn:(BOOL) 
     { 
     [self setNameLabel:text]; 
     if (isOn) 
     [self setOnLabel:ON]; 
     else 
      [self setOnLabel:OFF]; 
     } 
+0

a obtenu encore le point-virgule à la fin de la déclaration de méthode qui soulève l'erreur. –

-1

Il devrait être:

- (void)updateLabels:(NSString *)text status:(BOOL) isOn { 
    ... 

Vous avez besoin enlever le point-virgule après la déclaration de la méthode. Le second et les suivants ont besoin d'un nom de champ (status) et d'une variable pour mettre la valeur dans (isOn).

Dans la déclaration d'interface que vous remplacez le support d'ouverture pour un point-virgule comme ceci:

- (void)updateLabels:(NSString *)text status:(BOOL) isOn; 

ensuite appeler ressemblerait à ceci:

[... updateLabels:@"My label text" status:YES]; 
+0

-1 Vous n'avez pas besoin d'enlever le point-virgule (croyez-le ou non) et vous pouvez avoir un deux-points vide dans un sélecteur. – JeremyP

+0

Oh, je ne le savais pas. Quel est l'effet de laisser le point-virgule dans et en utilisant des colons nus dans les sélecteurs? Je suppose qu'ils seraient classés comme une pratique moins que souhaitable, car je ne l'ai pas vu dans les exemples et les livres que j'ai regardé :-) – drekka

+0

Clarkson: Vous avez raison, vous * devriez * nommer tous les paramètres dans le sélecteur, et vous verrez rarement le code qui ne le fait pas. – mipadi

2

quelques problèmes ici. D'abord, vous n'avez pas besoin de ce point-virgule. Deuxièmement, vous n'avez pas besoin de passer des pointeurs pour ON et OFF:

- (void)updateLabelsWithText:(NSString *)text AndOnState:(BOOL)isOn { 
    [self setNameLabel: text]; 
    if(isOn) 
     [self setOnLabel:@"ON"]; 
    else 
     [self setOnLabel:@"OFF"]; 
} 
+0

Le point-virgule superflue est en fait légal croyez-le ou non. – JeremyP

+0

Bon à savoir, je pensais qu'il a jeté des erreurs –

Questions connexes