Objective-C 中的 Switch 语句和实例变量分配
我似乎在 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;
}
I seem to be having a problem creating new local variables inside a switch statement. I thought it was something in my class headers, but was even getting errors trying to allocate a new NSObject. Here's my syntax:
-(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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 switch 语句中,如果不先设置范围,则无法初始化变量,因此要修复它,请执行以下操作:
In a switch statement, you cannot initialize variables without setting a scope first, so to fix it, do something like this:
您需要在 switch 语句之外声明“obj”,或者使用大括号,如下所示:
请参阅此处了解更多信息:
为什么不能在 switch 语句中声明变量?
You need to either declare "obj" outside of the switch statement, or use braces as follows:
See here for more information:
Why can't variables be declared in a switch statement?
在 switch-case 中只能使用表达式。
您可以使用如下方法修复此问题:
In switch-case you can only use expressions.
You can fix this by using something like this: