我正在开发一个项目,该项目具有在UITextView中编辑数据的功能,然后以RTF文件格式通过电子邮件发送该UITextView中的文本。我得到了一切工作,甚至能够附加数据并通过电子邮件发送。当我尝试下载文件并在我的计算机上打开它时出现问题,它说“文档无法打开”。但是,当我使用Gmail预览时,我可以看到文本在文件中。
所以我想知道我的代码中是否有一个设置或选项来“完成”RTF文件?或者,如果有一种比我正在做的更正确的方式。这就是我正在做的事情:
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"EMAIL TEST"];
// Fill out the email body text
NSString *emailBody = @"Send RTF";
[picker setMessageBody:emailBody isHTML:NO];
NSData *dataString = [[myTextView text] dataUsingEncoding:NSUTF8StringEncoding];
[picker addAttachmentData:dataString mimeType:@"text/rtf" fileName:@"rtfFileName"];
[self presentViewController:picker animated:YES completion:NULL];
据我所知,我可以使用mimeType“text / plain”,它创建了一个文本文件,当我通过电子邮件发送给自己时,我可以打开该文件。但我希望有一个RTF文件。感谢您的回复!
答案 0 :(得分:0)
您实际上没有任何RTF可以附加到电子邮件中。文本视图的text
属性只是纯文本。
您需要将文本视图的attributedText
转换为RTF。这可以按如下方式完成:
NSAttributedString *attrStr = myTextView.attributedText;
NSError *error = nil
NSData *data = [attrStr dataFromRange: NSMakeRange(location: 0, length: attrStr.length]) documentAttributes:@{ NSDocumentTypeDocumentAttribute: NSRTFTextDocumentType } error: &error];
if (data) {
[picker addAttachmentData:data mimeType:@"text/rtf" fileName:@"rtfFileName"];
} else {
NSLog(@"Error: %@", error);
}