Utilizando una statement de cambio en Obj-C

A continuación se muestra una instrucción Switch / Case que muestra un post de error cuando no se puede enviar un correo electrónico. En su mayor parte, todo parece correcto, pero cuando UIAlertView un UIAlertView en la statement de cambio, obtengo un error en Xcode:

Error 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; } 

¿Por qué genera un error cuando coloco código dentro del case ?

Colóquelo entre paréntesis:

 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; } 

El problema es declarar variables dentro de los casos de un interruptor. El comstackdor está molesto por intentar averiguar el scope cuando solo se ejecuta parte del código. Si coloca corchetes alnetworkingedor del contenido del caso de "falla", debería estar bien ya que eso restringe el scope.