質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.60%

  • Objective-C

    1172questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

  • Xcode 7

    615questions

    Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

メールの添付ファイル名について

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 836

northpotato

score 29

iOS9, xcode7, Objective C の初心者です。
iPod touch の加速度センサーを使って得た
デバイスの傾斜角を csvファイルにして
自分宛にメールするプログラムを作成中です。

下記ソフトにて、→1 の部分はうまく機能していたのですが
ファイル名が同じだと、後の処理に支障を来すため
ファイル名を 日付と時間 yyyy_MM_dd-HH_mm_ss.csv  とするため
→2 のようにしたところ、
イメージ説明のようなエラーメッセージが出てしまい、メールも送られていませんでした。

この意味がよくわからないのですが、どなたかご教示頂けましたら
幸いです。 ( .csv の拡張子の付け方も)

宜しくお願い致します。

  • (IBAction)buttn_mail:(id)sender { 
    // メール設定が行われているか確認
//    if ( [MFMailComposeViewController canSendMail] == YES )
//    {
        // メール設定が行われている場合
        // メールビュー生成
        MFMailComposeViewController* picker  = [[MFMailComposeViewController alloc] init];
        picker.mailComposeDelegate = self;
//    }
  
    char *value_chr;
    value_chr = (char *)malloc(1000);
        for (int i=0; i <=jcount_m; i++) {       
            sprintf(value_chr, "%4.1f", angle_ar[i]);
            strcat(csvData, value_chr);
            strcat(csvData, ",");
        }
    
    // 取得したNSStringをNSdataに変換
    
    NSString* str = [NSString stringWithCString: csvData encoding:NSUTF8StringEncoding];
    NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

    NSDate *dt =[NSDate date];
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy_MM_dd-HH_mm_ss";
    NSString *str2 = [fmt stringFromDate:dt];
    NSData* data2 = [str2 dataUsingEncoding:NSUTF8StringEncoding];
    
    // mimeTypeはtext/csv
// → 1   [picker addAttachmentData:data mimeType:@"text/csv" fileName:@"export.csv"];
    
// → 2    [picker addAttachmentData:data mimeType:@"text/csv" fileName:data2];
    
    [picker setSubject:@"data_ mail" ];  // 件名
    [picker setToRecipients:[ NSArray arrayWithObject:@"xxx@xxxxxxxx" ] ];  // 宛先
    [picker setMessageBody:@"incl_data" isHTML:NO ];  // 本文
    
    // メールビュー表示
    [self presentViewController:picker animated:YES completion:nil];
    
    }

//メール送信完了時に呼ばれる(6)
  • (void)mailComposeController:(MFMailComposeViewController*)picker
          didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
//    if (error!=nil) [self showAlert:@"" text:@"メール送信失敗しました"];
    
    //オープン中のビューコントローラを閉じる
    // モーダルビューを消す
         [self dismissViewControllerAnimated:YES completion:nil];
    }

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

fileNameパラメータはNSStringなので、そのままfileName:str2と指定すればいいんじゃないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/26 17:51

    とても迅速なご回答、ありがとうございます。
    あまりの早さにびっくりしました。

    おっしゃるように

    NSDate *dt =[NSDate date];
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"yyyy_MM_dd-HH_mm_ss.csv";
    NSString *str2 = [fmt stringFromDate:dt];
    // NSData* data2 = [str2 dataUsingEncoding:NSUTF8StringEncoding];

    // mimeTypeはtext/csv
    // [picker addAttachmentData:data mimeType:@"text/csv" fileName:@"export.csv"];

    [picker addAttachmentData:data mimeType:@"text/csv" fileName:str2];

    としましたところ、添付メールも送られてきました。
    ただ、私の訂正の仕方が悪かったのだと思うのですが、
    ファイル名が 2015_09_26-17_28_00.70JST となってしまいました。
    日本時間の取り方に修正するつもりですが、 .csv を拡張子としてつけるには、どのようにしたらよいでしょうか。
    重ねて、ご教示頂けましたら幸いです。
    宜しくお願い致します。

    キャンセル

  • 2015/09/26 20:41

    > fmt.dateFormat = @"yyyy_MM_dd-HH_mm_ss.csv";
    は、日付フォーマットの指定であり、cは曜日番号、sは秒、vはタイムゾーンを表示する意味になります。で、「.csv」という文字をそのまま書きたかったら、書きたい文字をシングルクォーテーション文字(')で囲めばよいというルールになっています
    なので、
    fmt.dateFormat = @"yyyy_MM_dd-HH_mm_ss'.csv'";
    と指定すればいいです。
    日付フォーマットの指定方法については、以下を参照してください。
    http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns

    キャンセル

  • 2015/09/27 13:19

    回答、ありがとうございました。
    お陰様で、希望通りのファイル名にすることができました。
    本当に、助かりました。 今後とも、宜しくお願い致します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Objective-C

    1172questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

  • Xcode 7

    615questions

    Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。