2010-09-19 4 views
1

Je suis nouveau à ceci donc s'il vous plaît excusez mes questions probablement simples. J'espère que vous pourrez m'aider assez facilement! Je fais une application qui utilise 4 variables pour calculer la quantité d'eau recommandée pour l'utilisateur. Le problème avec cette déclaration de commutateur est que, quelle que soit la valeur à laquelle je définis l'âge, elle fait toujours le dernier cas. Pourquoi est-ce?Noob chez Xcode et Objective C, essayant de comprendre les variables globales, et de changer l'instruction

De plus, puisque mes variables sont toutes obtenues à partir de différentes méthodes (IBAction), doivent-elles être définies comme des variables globales? Et comment j'irais faire ça?

S'IL VOUS PLAÎT AIDE!

Merci beaucoup :)

-(IBAction) updatePrefs:(id) sender 
{ 

    switch (age){ 
    case 1: 
     RWI = 1; 
     Output.text = [NSString stringWithFormat:@"You should drink 1 litre a day"]; 
    case 2: 
     Output.text = [NSString stringWithFormat:@"You should drink 1.5 litres a day"]; 
    case 3: 
     RWI = (weightkg * weightpounds * activity); 
     Output.text = [NSString stringWithFormat:@"You should drink 2 litres a day"]; 
     break; 
    default: 
     break; 
} 
+0

D'où vient la variable d'âge à partir? Est-ce une propriété? Avez-vous @synthesize it? –

+0

non Je viens de le déclarer dans mon fichier de classe .h @implementation AppPrefsViewController int age; \t UILabel * Sortie; son plus tard donné une valeur dans une autre méthode – anneke

+0

Pourquoi utilisez-vous, par exemple, '[NSString stringWithFormat: @" Vous devriez boire 1 litre par jour "]' au lieu de simplement dire "@" Vous devriez boire 1 litre par jour "' ? – Alexander

Répondre

2

J'ai manqué quelques étapes que vous devez insérer pause après chaque cas.

Vous écrivez du code devrait ressembler à:

switch (age){ 

    case 1: RWI = 1; 
     Output.text = [NSString stringWithFormat:@"You should drink 1 litre a day"]; 
     break; 
    case 2: 
     Output.text = [NSString stringWithFormat:@"You should drink 1.5 litres a day"]; 
     break; 
    case 3: RWI = (weightkg * weightpounds * activity); 
     Output.text = [NSString stringWithFormat:@"You should drink 2 litres a day"]; 
     break; 
    default: 
    break; 
} 
2

Mettre un

break;

À la fin de chaque bloc d'instructions. Sans la pause le chemin d'exécution de votre code tombe simplement dans chaque ensemble d'instructions et vous vous retrouvez avec var assigné la dernière valeur dans l'instruction switch.

+1

ahhhh! : D cool merci les gars! – anneke