Ios 为什么NSString initWithFormat不起作用。“错误”;期望表达式“;

Ios 为什么NSString initWithFormat不起作用。“错误”;期望表达式“;,ios,objective-c,xcode,nsstring,switch-statement,Ios,Objective C,Xcode,Nsstring,Switch Statement,我有以下代码 NSString * myStr = [[NSString alloc] initWithFormat:@""]; 但在Xcode中,我用红色感叹号表示“期望表达式” 我已经解决了以下问题: [NSString stringWithFormat:@"Number is not from 1 to 6. randomNumber is %d", randomNumber] 但我想知道问题出在哪里 形象 谢谢根据Objective-C规则,如果您在开关的外壳内声明一个对象,您必须

我有以下代码

NSString * myStr = [[NSString alloc] initWithFormat:@""];
但在Xcode中,我用红色感叹号表示“期望表达式”

我已经解决了以下问题:

[NSString stringWithFormat:@"Number is not from 1 to 6. randomNumber is %d", randomNumber]
但我想知道问题出在哪里

形象


谢谢

根据Objective-C规则,如果您在
开关的
外壳
内声明一个对象,您必须用括号将所有外壳包围起来
{}

switch(randomNumber){
   case 1:{
      break;
   }
   default:{
      NSString * myStr = [[NSString alloc] initWithFormat:@""];
      break;
   }
}

在中,根据Objective-C规则,如果在
开关的
案例
中声明一个对象,则必须用括号将所有案例正文括起来
{}

switch(randomNumber){
   case 1:{
      break;
   }
   default:{
      NSString * myStr = [[NSString alloc] initWithFormat:@""];
      break;
   }
}
试试这个:

 default:{
       NSString * myStr = [[NSString alloc] initWithFormat:@""];
       break;
    }
case
相同,如果要在开关中定义实例,请添加
{…}

尝试以下操作:

 default:{
       NSString * myStr = [[NSString alloc] initWithFormat:@""];
       break;
    }

case
相同,如果要在switch中定义实例,请添加
{…}

除非将
case/default
主体括在
{}
语句中,否则不能在
switch
语句中声明变量

switch(randomNumber){
   case 1:{
      break;
   }
   default:{
      NSString * myStr = [[NSString alloc] initWithFormat:@""];
      break;
   }
}

注意,这样做的原因是
开关是一个长代码块,变量似乎在其中声明,但可能不会沿着所有可能的路径初始化。如果在作为
goto
目标的标签之后声明变量(注意
开关
只是一个形式化的goto标签设置),则会出现相同的错误。

除非将
case/default
主体括在
{}
语句中,否则不能在
开关中声明变量

switch(randomNumber){
   case 1:{
      break;
   }
   default:{
      NSString * myStr = [[NSString alloc] initWithFormat:@""];
      break;
   }
}

注意,这样做的原因是
开关是一个长代码块,变量似乎在其中声明,但可能不会沿着所有可能的路径初始化。如果在作为
goto
目标的标签后声明变量(请注意
开关
只是一个正式的goto标签设置),则会出现相同的错误。

是,我也遇到了同样的情况。你能寄一些吗code@Dinesh当我注释该行时,一切正常,当未注释时,我有此错误。我真的不明白为什么???发布更多的代码,因为这一行是正确的。请发送更多的代码/错误截图,以便我们也知道是什么导致了错误。由于您给出的代码是绝对正确的,因此请不要不必要地使用
stringWithFormat:
。这应该是:
NSString*myStr=@”是的,同样的事情也发生在我身上。你能寄一些吗code@Dinesh当我注释该行时,一切正常,当未注释时,我有此错误。我真的不明白为什么???发布更多的代码,因为这一行是正确的。请发送更多的代码/错误截图,以便我们也知道是什么导致了错误。由于您给出的代码是绝对正确的,因此请不要不必要地使用
stringWithFormat:
。这应该是:
NSString*myStr=@”这并没有真正回答所问的问题,OP很可能在这行的上方或下方出现语法错误,Xcode将错误放在了上面。所以如果我理解正确的话。我将{}放入默认值中,错误消失了。这就是问题所在。有什么解释吗?阅读问题是,
case
是一个标签,根据语言规则,不能将声明作为标签的第一行。这正是我想要的!如果没有它,它似乎会混淆语法分析器:数据这并不能真正回答所问的问题,可能是OP在这一行的上方或下方出现语法错误,Xcode将错误放在了这一行上。因此,如果我理解正确的话。我将{}放入默认值中,错误消失了。这就是问题所在。有什么解释吗?阅读问题是,
case
是一个标签,根据语言规则,不能将声明作为标签的第一行。这正是我想要的!如果没有它,它似乎会混淆语法分析器:D