アプリで奇妙な問題に直面しており、あなたの助けが必要です!
MFMailComposeViewController を使用して、添付データ付きの電子メールを送信しています。添付ファイルは、PDF、CSV、または XLS ファイルのいずれかです。ZIP ファイルをメールに追加することもできます。
ほとんどの場合、すべて正常に動作しますが、添付ファイルが XLS であり、ZIP が追加されている場合に (実際には非常に頻繁に)、複数のメモリ警告が表示され、コンポーザは MFMailComposeResultFailed を返し、まったく役に立たないエラーが返されます (コード エラー 1、「操作を完了できませんでした。(MFMailComposeErrorDomain エラー 1.)」)。
私の質問は、なぜそれを行うのですか? メモリの警告は、何かが適切に管理されていないことを示していると思いますが、何が原因かわかりません...
ここにメールを送信するための私のコードがあります
-(void) sendMail {
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
[self prepareMailPicker:picker];
NSString *filePath = [self getFilePath:pType];
NSString *zipFile = [self getZipPath];
NSString *mimeType;
int userPhoto = [User getCSVPhoto];
switch (pType) {
case EPDF:
mimeType = @"application/pdf";
userPhoto = [User getPDFPhoto];
break;
case ECSV:
mimeType = @"text/csv";
break;
case EExcel:
mimeType = @"application/vnd.ms-excel";
break;
default:
break;
}
NSData *attachmentData = [NSData dataWithContentsOfFile:filePath];
[picker addAttachmentData:attachmentData mimeType:mimeType fileName:[filePath lastPathComponent]];
if (userPhoto == 1 && shouldAddZip) {
NSData *zipData = [NSData dataWithContentsOfFile:zipFile];
[picker addAttachmentData:zipData mimeType:@"application/zip" fileName:[zipFile lastPathComponent]];
}
shouldAddZip = NO;
[self presentModalViewController:picker animated:YES];
}
-(void) prepareMailPicker:(MFMailComposeViewController*)picker {
picker.mailComposeDelegate = (id<MFMailComposeViewControllerDelegate>)self;
picker.navigationBar.tintColor = grayDark;
[picker setSubject:[TextManager textForKey:@"EMAIL_SUBJECT"]];
NSString *email = [[User currentUser] getEmail];
if (email && ![email isEqualToString:@""])
[picker setToRecipients:[NSArray arrayWithObject:email]];
NSString *emailBody = [TextManager textForKey:@"EMAIL_TEXT"];
[picker setMessageBody:emailBody isHTML:YES];
}
どんな助けでも大歓迎です!
編集: @matt が尋ねたように、何も nil に設定されていないことを証明するログを次に示します。
filePath : /var/mobile/Applications/A57F5CD2-E3FE-4417-8810-D746A22CF434/Documents/iNdF_Export_2012-11-19.xls
zipFile : /var/mobile/Applications/A57F5CD2-E3FE-4417-8810-D746A22CF434/Documents/iNdF_recus_2012-11-19.zip
attachmentData : (NSConcreteData *) <0x1d9c3c20> 53 874 bytes
zipData : (NSConcreteData *) <0x1f989100> 6 838 456 bytes