2012-07-31 128 views
0

Xcode在我的代码中抱怨第二个else if语句的“Expected expression required”。我曾尝试使用从我在这里看过的代码中使用括号,但那不起作用,并且不确定它现在想要什么表达式?正常工作,直到我添加第二个else if 我意识到这可能是基本的目标C的东西,但如果语句已经从来没有做过的了两个多项目即时通讯有点坚持if else语句的预期表达式错误

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 


if ([text1 isFirstResponder])return arrStatus.count; 

else 


    if ([text2 isFirstResponder]);return arrStatus2.count; 

    else ///<<<<< wants an expected expression here 


     if ([text3 isFirstResponder]);return arrStatus2.count; 

} 

回答

2

你经过一番if陈述有虚假分号:

if ([text2 isFirstResponder]); <--- here 

除此之外,你的代码是缩进很差,你应该停止把报表在同一行if/else if线:

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    if ([text1 isFirstResponder]) 
     return arrStatus.count; 
    else if ([text2 isFirstResponder]) 
     return arrStatus2.count; 
    else if ([text3 isFirstResponder]) 
     return arrStatus2.count; 
} 
+0

谢谢,下次注意到。那让我沮丧地把我的苹果机丢在地板上! – JSA986 2012-07-31 12:27:17

+0

@ JSA986是的,不要那样做! Waaaay太昂贵了,无法替换... – trojanfoe 2012-07-31 12:27:57

3

你只需要在你的第二个额外的分号if声明。 它应该是:if ([text2 isFirstResponder]) return arrStatus2.count;

PS。你在第三个if也犯了同样的错误......你应该考虑使用大括号,即使是单线。

+0

谢谢你的答复,+ 1,你再花括号的建议是一个功能性的东西?或者只是为了让代码更清晰? – JSA986 2012-07-31 12:36:44

+0

我的建议是基于这样一个事实,即很多时候你从一个简单的if语句开始,稍后你只想扩展它,所以你添加大括号。此外,在我看来,当你有很多陈述时它有助于可读性。除此之外,单线球员是完全有效的。 – Alladinian 2012-07-31 12:40:23

1

你的函数/方法需要返回一些东西,在本例中是NSInteger。但是,在没有返回语句的情况下,您的代码中可能会出现这种情况。在你最后的其他地方,如果if语句不正确,则不会返回任何内容。

if ([text1 isFirstResponder]) { 
    return arrStatus.count; 
} else { 
    if ([text2 isFirstResponder]) { 
     return arrStatus2.count; 
    } else { 
     if ([text3 isFirstResponder]) { 
      return arrStatus2.count; 
     } 
     // nothing will be returned here 
     // you can return nil or actual 0 
     // return nil; 
     // return 0; 
    } 

}

+0

感谢您指出了这一点,它已经停止了另一个潜在的错误+1,为此,我返回nil并得到一个黄色警告:“不兼容的指向interger转换的指针从函数中返回void,结果类型为NSInterger (AKA int)' – JSA986 2012-07-31 12:33:26

+0

我假设这个值通常不会被返回,因为它总是3个if case中的1个?比我建议只返回一个NSInter的值至少不会让程序导致警告或崩溃,因为我实际上不明白这段代码应该做什么。 – 2012-07-31 12:48:56