下面是一个Switch / Case语句,当无法发送电子邮件时显示错误消息。在大多数情况下,一切似乎都是正确的,但当我将UIAlertView
放入Switch语句时,我在Xcode中收到错误:
switch (result) {
case MFMailComposeResultCancelled:
NSLog(@"Result: Mail sending canceled");
break;
case MFMailComposeResultFailed:
NSLog(@"Result: Mail sending failed");
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Sending Failed"
message:@"The email could not be sent."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[message show];
break;
default:
NSLog(@"Result: Mail not sent");
break;
}
为什么在将代码放入case
?
答案 0 :(得分:14)
把它放在括号中:
case MFMailComposeResultFailed: {
NSLog(@"Result: Mail sending failed");
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Sending Failed"
message:@"The email could not be sent."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[message show];
break;
}
答案 1 :(得分:12)
问题是在交换机的情况下声明变量。编译器对于仅在执行某些代码时尝试确定范围感到不安。如果你在“失败”案例的内容周围加上括号,那就应该没问题,因为这限制了范围。