0

私NSMutableArrayのデータはNSDataのformate.Iであるbody.Hereは私NSMutableArrayのコードでEメールに添付NSMutableArrayのデータにしようとしています:電子メール本文にNSMutableArrayデータが添付されていますか?

NSUserDefaults *defaults1 = [NSUserDefaults standardUserDefaults]; 
    NSString *msg1 = [defaults1 objectForKey:@"key5"]; 
    NSData *colorData = [defaults1 objectForKey:@"key6"]; 
    UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData]; 
    NSData *colorData1 = [defaults1 objectForKey:@"key7"]; 
    UIColor *color1 = [NSKeyedUnarchiver unarchiveObjectWithData:colorData1]; 
    NSData *colorData2 = [defaults1 objectForKey:@"key8"]; 
    UIFont *color2 = [NSKeyedUnarchiver unarchiveObjectWithData:colorData2]; 
    CGFloat x =(arc4random()%100)+100; 
    CGFloat y =(arc4random()%100)+250; 
    lbl = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, 70)]; 
    lbl.userInteractionEnabled=YES; 
    lbl.text=msg1; 
    lbl.backgroundColor=color; 
    lbl.textColor=color1; 
    lbl.font =color2; 
    lbl.lineBreakMode = UILineBreakModeWordWrap; 
    lbl.numberOfLines = 50; 
    [self.view addSubview:lbl]; 
    [viewArray addObject:lbl ]; 

viewArrayはviewArrayで私NSMutableArrayの。すべてのデータストアであるNSDataのですformate。その後どのようにこのビューの配列データを添付することができます。電子メールbody.hereは私の電子メールコードです。私はエラーがここに店であり、また、私はNSDataのにviewArrayを変換するとき、それはconsole.butでバイトを示しているbody..which Eメールのいずれかのデータを表示していないオブジェクトを示していない.viewArray取得

- (IBAction)sendEmail 
{ 

if ([MFMailComposeViewController canSendMail]) 
{ 
    NSArray *recipients = [NSArray arrayWithObject:@"[email protected]"]; 
    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] 
    init]; 
    controller.mailComposeDelegate = self; 
    [controller setSubject:@"Iphone Game"]; 

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray]; 
    NSLog(@"testing: %@", data); 
    [controller addAttachmentData:data mimeType:@"application/octet-stream"; 
    fileName:nil]; 

    NSString *emailBody = @"Happy Valentine Day!"; 
    [controller setMessageBody:emailBody isHTML:NO 
    [controller setToRecipients:recipients]; 
    [self presentModalViewController:controller animated:YES]; 
    [controller release]; 

    } 
else 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert" 
    message:@"Your device is not set up for email." 
              delegate:self 
            cancelButtonTitle:@"OK" 
            otherButtonTitles: nil]; 

[alert show]; 

[alert release]; 
} 

} 

viewArray.please任意の1つのガイドどのように電子メールで私のviewArrayデータを添付することができます。 addAttachmentData:mimeType:fileName:ためMFMailComposeViewController referenceから

答えて

4

ファイル名

データに関連付ける優先ファイル名。ファイルへの転送時にファイルに適用されるデフォルトの名前です。ファイル名のパス区切り(/)文字は、送信前にアンダースコア(_)文字に変換されます。このパラメータはnilであってはなりません。

メール本文に表示するファイル名を指定する必要があるようです。ちょうどどんな文字列でもできます。

EDIT:

私は私が言ったように私は...あなたのコメントを理解することはできません怖いです、私は正常にあなたのコードを電子メールで送信されました:私が取得することはplistファイルなので、すべてが期待どおりに働いています。 これは私が使用していたコードです:あなたのケースでは、

NSUserDefaults *defaults1 = [NSUserDefaults standardUserDefaults]; 
NSString *msg1 = [defaults1 objectForKey:@"key5"]; 
UIColor *color = [UIColor grayColor]; 
UIColor *color1 = [UIColor grayColor]; 
UIFont *color2 = [UIFont systemFontOfSize:12]; 
CGFloat x =(arc4random()%100)+100; 
CGFloat y =(arc4random()%100)+250; 
UILabel* lbl = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, 70)]; 
lbl.userInteractionEnabled=YES; 
lbl.text=msg1; 
lbl.backgroundColor=color; 
lbl.textColor=color1; 
lbl.font =color2; 
lbl.lineBreakMode = UILineBreakModeWordWrap; 
lbl.numberOfLines = 50; 
[self.view addSubview:lbl]; 
NSMutableArray* viewArray = [NSMutableArray arrayWithCapacity:1]; 
[viewArray addObject:lbl ]; 


if ([MFMailComposeViewController canSendMail]) { 
    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
    mailer.mailComposeDelegate = self; 
    [mailer setSubject:@"Hello"]; 
    [mailer setToRecipients:[NSArray arrayWithObjects:@"[email protected]", nil]]; 
    NSString *emailBody = @""; 
    [mailer setMessageBody:emailBody isHTML:NO]; 

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray]; 
    [mailer addAttachmentData:data mimeType:@"application/octet-stream" fileName:@"prova.plist"]; 

    [self presentModalViewController:mailer animated:YES]; 
    [mailer release]; 
} 

私は行くだろう方法は次のとおりです。

  1. は一瞬のために添付ファイルを忘れて、そしてあなたに単純なテキストを送信しようEメール;

  2. それが動作するかどうか、あまりにも添付ファイルを送信2行を追加します、どちらの場合も

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray]; 
    [mailer addAttachmentData:data mimeType:@"application/octet-stream" fileName:@"prova.plist"]; 
    

をあなたのデリゲートメソッド- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)errorにブレークポイントを設定し、実行された分岐を参照してください。

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
switch (result) { 
     case MFMailComposeResultCancelled: 
     case MFMailComposeResultSaved: 
     case MFMailComposeResultSent: 
     case MFMailComposeResultFailed: 
     default: 
     break; 
    } 
[self dismissModalViewControllerAnimated:YES]; 
} 
+0

Thanx @ sergio.butまだ私の配列データは電子メールで見られませんでした。 – jamil

+0

Strange ...私は適切なファイル名でコードを試してみましたが、color/color1/color2を自分で初期化する必要はありません(私はユーザーデフォルトを設定していません)ので、動作し、メール本文(配列データ、添付ファイルではありません)...あなたは何を見たいですか? – sergio

関連する問題