Jus*_*tin 9 cocoa cocoa-touch objective-c switch-statement ios
我似乎在switch语句中创建新的局部变量时遇到问题.我认为它是我的类标题中的东西,但是甚至在尝试分配新的NSObject时遇到错误.这是我的语法:
-(NSArray *)charactersFromChapter:(NSInteger)number {
NSObject *noError = [[NSObject alloc] init];
//line above does not cause error
NSArray *characters;
switch (number) {
case 1:
NSObject *obj = [[NSObject alloc] init];
//error happens in line above (Expected expression)
characters = [NSArray arrayWithObject:obj];
break;
case 2:
break;
case 3:
break;
}
return characters;
}
Run Code Online (Sandbox Code Playgroud)
Ric*_*III 32
在switch语句中,如果不首先设置作用域,则无法初始化变量,因此要修复它,请执行以下操作:
switch (some_expression) {
case case_1:
{ // notice the brackets
id some_obj = [MyObj new];
break;
}
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
您需要在switch语句之外声明"obj",或者使用大括号,如下所示:
switch (number) {
case 1: {
NSObject *obj = [[NSObject alloc] init];
//error happens in line above (Expected expression)
characters = [NSArray arrayWithObject:obj];
break;
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参见此处: 为什么不能在switch语句中声明变量?