0

我的 NSMutableArray 数据采用 NSData 格式。我正在尝试将 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 是我的 NSMutableArray 。viewArray 中的所有数据存储都在 NSData 格式中。我尝试将此代码附加到电子邮件中的 viewArray 数据中。

   - (IBAction)sendEmail {
          if ([MFMailComposeViewController canSendMail])
      {
     NSArray *recipients = [NSArray arrayWithObject:@"example@yahoo.com"];
    MFMailComposeViewController *controller = [[MFMailComposeViewController 
                                        alloc] init];
     controller.mailComposeDelegate = self;
     [controller setSubject:@"Iphone Game"];
     NSLog(@"viewArray: %@", viewArray);
     NSString *string = [viewArray componentsJoinedByString:@"\n"];
     NSString *emailBody = string; 
     NSLog(@"test=%@",emailBody);
     [controller setMessageBody:emailBody isHTML:YES];
     [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.in 控制台中,它看起来像这样.. [2012-05-07 18:48:00.065 Note List[279:207] test=UILabel: 0x8250850; 帧 = (140 341; 56 19); 文本 = 'Xxxxxxx'; clipsToBounds = YES; layer = > 但在电子邮件中我只看到这个..>> 请建议任何人如何在电子邮件中附加我的 viewArray 数据。]

4

1 回答 1

1

在电子邮件附件中,您只能将 NSData 或字符串发送到电子邮件,现在如果您想通过字符串发送,然后获取您想要发送电子邮件的所有值,例如,lable.text、lable.color、lable.alpha 等,并使用适当的键并将其放在正文中并在那里解析,否则找到某种方法将您的对象转换为 NSData 并使用 mfmailcomposer attach data 方法附加它

阅读此内容以将 NSArray 转换为 NSData

如何将 NSArray 转换为 NSData?

这将 NSData 转换回 NSArray

如何将 NSData 转换为 NSArray?

然后将此数据写入文件,

-(void)writeDataToFile:(NSString*)filename
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    if(filename==nil)
    {
        DLog(@"FILE NAME IS NIL");
        return;
    }
    // the path to write file
    NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat: @"%@",filename]];
    /*NSData *writeData;
     writeData=[NSKeyedArchiver archivedDataWithRootObject:pArray]; */
    NSFileManager *fm=[NSFileManager defaultManager];
    if(!filePath)
    {
        //DLog(@"File %@ doesn't exist, so we create it", filePath);
        [fm createFileAtPath:filePath contents:self.mRespData attributes:nil];
    }
    else 
    {
        //DLog(@"file exists");
        [self.mRespData writeToFile:filePath atomically:YES];
    }

    NSMutableData *resData = [[NSMutableData alloc] init];
    self.mRespData=resData;
    [resData release];
}

最后使用

- (void)addAttachmentData:(NSData *)attachment mimeType:(NSString *)mimeType fileName:(NSString *)filename
于 2012-05-07T14:09:21.310 回答