0

Xcode 抱怨else if我的代码中的第二条语句“需要预期的表达式”。我已经尝试使用我在这里查看过的代码中的括号,但这不起作用并且不确定它现在想要什么表达?工作正常,直到我添加第二个else if 我意识到这可能是基本的目标 C 东西,但是从来没有为两个以上的项目做过 if 语句我有点卡住了

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

 }
4

3 回答 3

3

你的第二个if语句只有一个额外的分号。它应该是:if ([text2 isFirstResponder]) return arrStatus2.count;

PS。您在 3 日也犯了同样的错误if……即使是单行,您也应该真正考虑使用大括号。

于 2012-07-31T12:04:14.180 回答
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;
 }
于 2012-07-31T12:04:17.527 回答
1

你的函数/方法需要返回一些东西,在这种情况下是一个 NSInteger。然而,您的代码中可能存在没有 return 语句的情况。在您的最后一个 else 中,如果 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;
   }

}

于 2012-07-31T12:04:45.727 回答