J'ai une méthode qui est appelée chaque fois qu'un contrôle sur ma vue change et doit mettre à jour un UILabel
. Il a deux UITextField
s et deux UISlider
s. Je vérifie d'abord si l'un des UITextField
s est vide et si c'est le cas, signalez qu'ils doivent être remplis. Sinon, je prends la différence entre les valeurs UITextField
s et génère un couple de float
s à utiliser dans mes NSString
s .Méthode gâchée - problèmes de structure et de manipulation de chaînes si/alors
Je reçois un avertissement que message
n'est pas utilisé et je reçois une erreur sur les NSString
s (ne me souviens pas exactement ce que - je ne suis pas mon Mac ...)
Et même quand je haché les messages vers quelque chose de simple qui a fonctionné, quand delta == 0
, il fait le message delta <= 0
.
Oh, et les chaînes ne mettent pas les valeurs là où sont les signes %
, elles impriment simplement les signes %
.
J'ai piraté à ce trop long et besoin d'aide ...
- (void)updateAdvice {
if ([chlorineSourceField.text isEqualToString:@""] || [poolVolumeField.text isEqualToString:@""]) {
NSString *message = [[NSString alloc] initWithString:@"Enter a chlorine source and pool volume."];
}
else {
int delta = [targetLabel.text intValue] - [startingLabel.text intValue];
float chlorineAmount = delta * [poolVolumeField.text intValue] * chlorineConstant;
float percentRemove = (1 - ([targetLabel.text floatValue]/[startingLabel.text floatValue]));
float gallonsRemove = percentRemove * [poolVolumeField.text intValue];
if (delta == 0) {
NSString *message = [[NSString alloc] initWithString:@"No adjustments necessary. You're on target"];
}
if (delta >= 0) {
NSString *message = [[NSString alloc] initWithFormat:@"To increase FC by %dppm, add %3.1f oz of %@.", delta, chlorineAmount, chlorineSourceField.text];
}
if (delta <= 0) {
NSString *message = [[NSString alloc] initWithFormat:@"You're above target already. Replace %d%% or %d gallons of water - or just wait for it to come down.", percentRemove*100, gallonsRemove];
}
}
adviceLabel.text = message;
[message release];
}
Duh, je ne veux pas moins-que-OU-égal, juste moins que. Je suis nouveau dans le monde C Puis-je simplement utiliser '<' and '>' dans la condition? Le '==' pour les égales me rejette =) Et savez-vous pourquoi les trucs% d ne fonctionneraient pas? – Steve
Oui, vous pouvez simplement utiliser '<' and '>'. J'ajouterais toujours les blocs 'else' aux blocs' if' - vous n'avez pas besoin que les trois soient toujours évalués. Non, je ne sais pas pourquoi la partie% d ne fonctionne pas. –
En fait, je viens de comprendre pourquoi le% d ne fonctionne pas. Je vais mettre à jour ma réponse. –