Iphone 开关/外壳问题

Iphone 开关/外壳问题,iphone,Iphone,若我试图在case语句中创建变量,它会给我生成错误 有人能告诉我为什么这个语法会导致生成错误(“NSMutableArray”之前的预期表达式)。假设您尝试执行以下操作: switch (...){ case someCase: NSMutableArray *array = ... break; ... } c(以及objective-c)不允许在switch case语句中声明变量。如果要这样做,必须通过将代码放入{}块来限制变量范围: switch (

若我试图在case语句中创建变量,它会给我生成错误
有人能告诉我为什么这个语法会导致生成错误(“NSMutableArray”之前的预期表达式)。

假设您尝试执行以下操作:

switch (...){
  case someCase:
        NSMutableArray *array = ...
        break;
...
}
c(以及objective-c)不允许在switch case语句中声明变量。如果要这样做,必须通过将代码放入{}块来限制变量范围:

switch (...){
  case someCase:{
        NSMutableArray *array = ...
  }
        break;
...
}

假设您尝试执行以下操作:

switch (...){
  case someCase:
        NSMutableArray *array = ...
        break;
...
}
c(以及objective-c)不允许在switch case语句中声明变量。如果要这样做,必须通过将代码放入{}块来限制变量范围:

switch (...){
  case someCase:{
        NSMutableArray *array = ...
  }
        break;
...
}

尝试在case语句中添加括号{},以便能够声明变量,如下所示:

switch (my_switch_statement)
{
     case my_switch_case: 
     {
         NSMutableArray *my_switch_array;
     }
}

尝试在case语句中添加括号{},以便能够声明变量,如下所示:

switch (my_switch_statement)
{
     case my_switch_case: 
     {
         NSMutableArray *my_switch_array;
     }
}

通常,您希望在开关的作用域之外声明变量,就像任何条件代码块一样


NSString * valueString;
int i = 1;
switch(i){
case 0:
valueString = @"case 0";
break;
case 1:
valueString = @"case 1";
break;
default:
valueString = @"not case 1 or 0";
break;
}
//valueString=>@"case 1"

NSString*valueString
int i=1
开关(i){
案例0:
valueString=@“案例0”;
中断;
案例1:
valueString=@“案例1”;
中断;
默认值:
valueString=@“不是案例1或0”;
中断;
}

//valueString=>@“case1”
通常,您希望在开关的作用域之外声明变量,就像任何条件代码块一样


NSString * valueString;
int i = 1;
switch(i){
case 0:
valueString = @"case 0";
break;
case 1:
valueString = @"case 1";
break;
default:
valueString = @"not case 1 or 0";
break;
}
//valueString=>@"case 1"

NSString*valueString
int i=1
开关(i){
案例0:
valueString=@“案例0”;
中断;
案例1:
valueString=@“案例1”;
中断;
默认值:
valueString=@“不是案例1或0”;
中断;
}

//valueString=>@“案例1”
可能的重复感谢Benoit的可能重复。添加花括号修复了Benoit的问题。添加花括号修复了这个问题