Проблемное If-утверждение, ошибка неиспользованной переменной - PullRequest
2 голосов
/ 03 октября 2011

Я новичок в программировании, и мне нужна ваша помощь ... У меня есть метка с именем "typeLabel", в которой текст метки по умолчанию se "NiMH".Этот текст меняется на NiCad через pickerView.Я хочу через оператор if изменить значение множителя, однако «неиспользуемая переменная floatTime» останавливает программу.Код:

-(IBAction)calculate:(id)sender {
    if ([typeLabel.text isEqualToString:@"NiCad"])
    {
        float floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.4;
    } else {
        float floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.5;
    }

    int intHourhs=(floatTime);
    float floatHours=(intHourhs);
    float floatMinutes=(floatTime-floatHours)*60;
    NSString *stringTotal = [NSString stringWithFormat: @"%1.1i Hours and %.0f Minutes", intHourhs, floatMinutes];
    chargeLabel.text=stringTotal;
}

Ответы [ 3 ]

7 голосов
/ 03 октября 2011

Вам нужно переместить объявление над оператором if:

float floatTime;
if ([typeLabel.text isEqualToString:@"NiMH"])
{
    floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.5;
} else {
    floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.4;
}

Когда вы объявляете локальную переменную внутри области видимости, она не видна за пределами этой области видимости.

1 голос
/ 03 октября 2011

float floatTime определяется внутри скобок операторов if, и они определяют его область действия. Переместите это:

float floatTime;
if ([typeLabel.text isEqualToString:@"NiMH"])
{
    floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.5;
} else {
    floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.4;
}

Фигурные скобки определяют область видимости, вещи, определенные внутри них, недоступны снаружи.

0 голосов
/ 03 октября 2011

Вы должны объявить время плавания в основном блоке кода, вне if / else, поэтому вы получаете ошибкуПопробуйте это:

-(IBAction)calculate:(id)sender {
float floatTime;
  if ([typeLabel.text isEqualToString:@"NiMH"])
{
   floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.5;
} else {
   floatTime=([mAhLabel.text floatValue]/chargerSlider.value)*1.4;
}
...