- 締切済み
csvデータの添付メール送信について
xcode6, iOS8, object C の初心者です。 iPodtouch の傾斜センサーを使用して、 int angle_ar[] に値を50個ほど 格納したものを、 csvData[ ] にカンマ区切りで入れ(csvデータ), 取得したNSStringをNSdataに次の2行にて変換しました。 (当相談室にて解決済み) ファイル保存はせず、データを直接、メール添付にて自分宛に送ろうとしています。 NSString* str = [NSString stringWithCString: csvData encoding:NSUTF8StringEncoding]; NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; ここまでは、デバッガーで内容を確認しました。 しかし、下記プログラムの [controller setMessageBody:@"incl_data" isHTML:NO ]; まで行ったところで、(最終行) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー // main.m // i_Scol-face_r #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); Thread 1: EXC_BAD_ACCESS (code=1, address=0x3239) と表示され、 } } ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 内容をたどってみると、 libobjc.A.dylib'objc_msgSend: 3行目、 ldrh.w r12, [r9, #0xc] Thread 1: EXC_BAD_ACCESS (code=1, address=0x3539) あたりで止まってしまっています。 どなたか、解決策、ご教示頂けましたら、幸いです。 宜しくお願い致します。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー - (IBAction)buttn_mail:(id)sender { char *value_chr; for (int i=0; i <=jcount_m; i++) { sprintf(value_chr, "%d", angle_ar[i]); strcat(csvData, value_chr); strcat(csvData, ","); } MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; // 取得したNSStringをNSdataに変換 // NSData* data = [csvData dataUsingEncoding:NSUTF8StringEncoding]; エラー発生のため、下記に修正 NSString* str = [NSString stringWithCString: csvData encoding:NSUTF8StringEncoding]; NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; // mimeTypeはtext/csv [controller addAttachmentData:data mimeType:@"text/csv" fileName:@"export.csv"]; [controller setSubject:@"data_ mail" ]; [controller setToRecipients:[ NSArray arrayWithObject:@"xxx@xxx.ac.jp" ] ]; [controller setMessageBody:@"incl_data" isHTML:NO ]; }
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- heburusu
- ベストアンサー率85% (140/164)
うーん、現状ではちょっと謎ですね・・・。 お力になれず申し訳ありません。。。 xCodeで開発しているとよく発生するエラーのようですが、 参考URLにデバッグ手順がまとめられているようですので、 ご参考に頂ければと思います。 #既にお試し頂いているかもしれませんが・・・
- heburusu
- ベストアンサー率85% (140/164)
早速試してみた頂きありがとうございます。 iOSやxCodeのバージョンによって変更がやや入っているのですね…。 参考URLにpresentViewControllerメソッドが受け取るパラメタが記載されています。 >- (void)presentViewController:(UIViewController *)viewControllerToPresent > animated:(BOOL)flag > completion:(void (^)(void))completion 第一引数にはUIViewController *を受け取るようになっていますので、 以下のようにcontrollerを渡してあげてはどうでしょうか? [self presentViewController:controller animated:YES completion:nil];
- 参考URL:
- http://apple.co/1fjuc5x
お礼
助言、頂き、ありがとうございます。 ご指摘のように [self presentViewController:controller animated:YES completion:nil]; を下記のように入れてみましたが ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー - (IBAction)buttn_mail:(id)sender { // char csvData[200] ="/0"; char *value_chr; for (int i=0; i <=jcount_m; i++) { sprintf(value_chr, "%d", angle_ar[i]); strcat(csvData, value_chr); strcat(csvData, ","); } MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; // 取得したNSStringをNSdataに変換 // NSData* data = [csvData dataUsingEncoding:NSUTF8StringEncoding]; エラー発生のため、下記に修正 NSString* str = [NSString stringWithCString: csvData encoding:NSUTF8StringEncoding]; NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; // mimeTypeはtext/csv [controller addAttachmentData:data mimeType:@"text/csv" fileName:@"export.csv"]; [controller setSubject:@"data_ mail" ]; [controller setToRecipients:[ NSArray arrayWithObject:@"xxxx@xxxxx.ac.jp" ] ]; [controller setMessageBody:@"incl_data" isHTML:NO ]; // [self presentModalViewController:controller animated:YES]; xcode6 以降では使えない [self presentViewController:controller animated:YES completion:nil]; } コンパイル時にエラーはでないのですが、実行時にこの行で Thread 1: EXC_BAD_ACCESS (code=1, address=0x03d) というエラーが表示され、そこで、プログラム自体がストップしてしまいます。 不思議です。 どこかで、何かの宣言を忘れてるとか、あるのでしょうか。 宜しくお願い致します。
- heburusu
- ベストアンサー率85% (140/164)
こんにちわ。 >[controller setMessageBody:@"incl_data" isHTML:NO ]; の後に以下行を追加するとどうでしょうか? メール画面が表示されるでしょうか? [self presentModalViewController:controller animated:YES];
お礼
ご助言頂き、ありがとうございます。 ただ、[self presentModalViewController:controller animated:YES]; を追加しますと ‘presentModalViewCintroller:amimated’ is deprecated: first deprecated in iOS6.0 と エラー表示されたため、ネットで調べたところ、 iOS 6 以降では [self presentViewController:viewController animated:YES completion:nil]; にするようにとのことでしたので試したところ、今度は Unexpected interface name 'ViewController': expected expression と表示されてしまいます。 xcodeは現在、6.4, iOS:8.4 ですが、バージョンが上がるたびに こういうトラブルが起きてくるのは、ユーザにとっては、とっても つらいところですね。 何か、お気づきの点ありましたら、宜しくお願い致します。
お礼
コメント、ありがとうございます。抜け出せない迷路に迷い込んだようで、八方ふさがりの感です。 教えて頂いたサイトを参考にし、またファイルとして一時保存したものをメールに添付、というのも試してみたいと思います。 進展ありましたら、ご報告したいと思います。 ありがとうございました。