• 締切済み

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

 }

みんなの回答

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.3

うーん、現状ではちょっと謎ですね・・・。 お力になれず申し訳ありません。。。 xCodeで開発しているとよく発生するエラーのようですが、 参考URLにデバッグ手順がまとめられているようですので、 ご参考に頂ければと思います。 #既にお試し頂いているかもしれませんが・・・

参考URL:
http://www.zero4racer.com/blog/480
ima_mitsu
質問者

お礼

 コメント、ありがとうございます。抜け出せない迷路に迷い込んだようで、八方ふさがりの感です。 教えて頂いたサイトを参考にし、またファイルとして一時保存したものをメールに添付、というのも試してみたいと思います。  進展ありましたら、ご報告したいと思います。 ありがとうございました。

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.2

早速試してみた頂きありがとうございます。 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
ima_mitsu
質問者

お礼

助言、頂き、ありがとうございます。 ご指摘のように [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)
回答No.1

こんにちわ。 >[controller setMessageBody:@"incl_data" isHTML:NO ];

 の後に以下行を追加するとどうでしょうか? メール画面が表示されるでしょうか? [self presentModalViewController:controller animated:YES];

参考URL:
http://www.crossbridge.biz/mfmailcomposeviewcontroller-with-image
ima_mitsu
質問者

お礼

ご助言頂き、ありがとうございます。 ただ、[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 ですが、バージョンが上がるたびに こういうトラブルが起きてくるのは、ユーザにとっては、とっても つらいところですね。  何か、お気づきの点ありましたら、宜しくお願い致します。

関連するQ&A