Xcode 4.4でこの警告が表示される人は他にいますか?
列挙型にないケース値'MessageComposeResult'(別名'enum MessageComposeResult')
MFMailComposeResultFailedは、メール作成インターフェイスがドキュメントで閉じられたときに返される結果コードに含まれています。ただし、ドキュメントにはそれが記載されていますが、GCCはMessageComposeResult内の列挙型ではないと警告しています。なんで?
case MFMailComposeResultFailed:{
//do something here
}
break;
このケースが呼び出される拡張メソッドは次のとおりです(警告を無効にするためにこの列挙型をコメントアウトしました):
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
UIAlertView *errormsg = nil;
// Notifies users about errors associated with the interface
switch (result)
{
case MFMailComposeResultCancelled:
{
//Do something, If you need to
NSString *msgtitle = @"Cancelled Mail";
NSString *Bodymsg = @"Email Has been Cancelled by USER. You may continue to make modifications to the current attendance data at this point.";
errormsg = [[UIAlertView alloc] initWithTitle:msgtitle message:Bodymsg delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
}
break;
case MFMailComposeResultSaved:{/*Do nothing at this point*/}
break;
//NOTE: MFMailComposeResultFailed is included in Result codes returned when the mail composition interface is dismissed. However the documentation lists it but the GCC warns it is NOT an enum within MessageComposeResult. May be an Apple Bug.
/*case MFMailComposeResultFailed:{
NSString *title = @"Unable to Send Mail";
NSString *msg = @"Failed:\nmessage was not saved or queued, possibly due to an error.\nCheck your mail sent or draft items.";
errormsg = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
}
break;
*/
case MFMailComposeResultSent:{
NSString *title = @"Mail Sent";
NSString *msg = @"Attendance Email has been sent. Thank you.";
errormsg = [[UIAlertView alloc] initWithTitle:title message:msg delegate:self cancelButtonTitle:@"Close" otherButtonTitles:nil];
//clean up data
//code here irrelevant
//set a completed flag for sent email in system
//display Alert and dismiss the mail composer view here
UIAlertView *alertView = nil;
if (result) {
alertView = [[UIAlertView alloc] initWithTitle:@"AttendanceViewController: viewDidLoad" message:@"updateProgressOfClassInstance FAILED" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
}
if (alertView != nil) {
[alertView show];
}
}
break;
default:
break;
}
//dismiss view and display any errors here.
[self dismissModalViewControllerAnimated:YES];
if (errormsg != nil) {
[errormsg show];
}
これが皆さんにとってそれを明らかにすることを願っています。ありがとう!
(更新)わかりました、コードにいくつかの問題がありましたが、そこにあることに気づいていませんでした。私はそれらを修正しました、そしてここに結果として生じる正しいswitchステートメントがあります。
switch (result)
{
case MessageComposeResultCancelled:
{
//Do something, If you need to!
}
break;
case MessageComposeResultFailed:{
//Do something else, If you need to!!
}
break;
case MessageComposeResultSent:{
//Do something user friendly, If you need to!
}
break;
default:
break;
}
自由な世界とstackoverflowでロッキンを続けてください!うわー!