有问题的If语句,未使用的变量错误

时间:2011-10-02 21:12:59

标签: objective-c scope

我是编程新手,我需要你的帮助...... 我有一个名为“typeLabel”的标签,其标签文本为“NiMH”。此文本通过pickerView更改为NiCad。我希望通过if语句来更改乘数值但是“unused variable 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 个答案:

答案 0 :(得分:7)

您需要将声明移到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 :(得分:1)

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;
}

大括号定义范围,其中定义的内容在外部不可用。

答案 2 :(得分:0)

你应该在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;
}