【问题标题】:iOS csv attachment to emailiOS csv 附件到电子邮件
【发布时间】:2014-11-17 21:07:39
【问题描述】:

我可以使用我的 iOS 应用成功地将附件添加到电子邮件中,但前提是我对文件名进行了硬编码,否则附件中没有数据。

这行得通:

(IBAction)sendEmail:(id)sender
{
transectNameString = [[NSUserDefaults standardUserDefaults] objectForKey:@"dipstransect"];
transectFileExt = [NSString stringWithFormat:@".csv"];
NSString *string1 = transectNameString;
NSString *string2 = @" Drops";
NSString *string3 = transectFileExt;
NSString *tempstring1 = [string1 stringByAppendingString:string2];
setTransectName = [tempstring1 stringByAppendingString:string3];

MFMailComposeViewController *mailComposer;
NSArray *emailAddresses;

mailComposer = [MFMailComposeViewController new];
emailAddresses = @[];
mailComposer.mailComposeDelegate = self;
[mailComposer setToRecipients:emailAddresses];

filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
fileName = @"Paynes Drops.csv";
fileAtPath = [filePath stringByAppendingPathComponent:fileName];
NSData *fileData = [NSData dataWithContentsOfFile:fileAtPath];

[mailComposer addAttachmentData:fileData mimeType:@"text/csv" fileName:fileName];

[self presentViewController:mailComposer animated:YES completion:nil];

}

这不起作用:

(IBAction)sendEmail:(id)sender
{
transectNameString = [[NSUserDefaults standardUserDefaults] objectForKey:@"dipstransect"];
transectFileExt = [NSString stringWithFormat:@".csv"];
NSString *string1 = transectNameString;
NSString *string2 = @" Drops";
NSString *string3 = transectFileExt;
NSString *tempstring1 = [string1 stringByAppendingString:string2];
setTransectName = [tempstring1 stringByAppendingString:string3];

MFMailComposeViewController *mailComposer;
NSArray *emailAddresses;

mailComposer = [MFMailComposeViewController new];
emailAddresses = @[];
mailComposer.mailComposeDelegate = self;
[mailComposer setToRecipients:emailAddresses];

filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
fileName = setTransectName;
fileAtPath = [filePath stringByAppendingPathComponent:fileName];
NSData *fileData = [NSData dataWithContentsOfFile:fileAtPath];

[mailComposer addAttachmentData:fileData mimeType:@"text/csv" fileName:fileName];

[self presentViewController:mailComposer animated:YES completion:nil];

}

导致问题的文件名是什么?

【问题讨论】:

  • 你调试过代码吗?验证您要构建 setTrasectName 的代码是否按预期工作。
  • 我通过将 NSUserDeafaults 语句移动到 ViewDidLoad 解决了这个问题,此后一切正常。
  • 如果你解决了它,你应该发布你自己的答案,以便问题被标记为已解决

标签: ios email csv attachment mfmailcomposeviewcontroller


【解决方案1】:

我将以下行移至 ViewDidLoad 语句并且它起作用了。

  • (void)viewDidLoad {

    transectNameString = [[NSUserDefaults standardUserDefaults] objectForKey:@"dipstransect"];

    [超级viewDidLoad]; // 加载视图后做任何额外的设置。 }

  • (IBAction)sendEmail:(id)sender {

    MFMailComposeViewController *mailComposer; NSArray *emailAddresses;

    mailComposer = [MFMailComposeViewController 新]; 电子邮件地址 = @[]; mailComposer.mailComposeDelegate = self; [mailComposer setToRecipients:emailAddresses];

    filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

    transectFileExt = [NSString stringWithFormat:@".csv"]; NSString *string2 = @"滴";

    NSString *tempString1 = [transectNameString stringByAppendingString:string2]; NSString *tempString2 = [tempString1 stringByAppendingString:transectFileExt];

    文件名 = tempString2; fileAtPath = [filePath stringByAppendingPathComponent:fileName]; NSData *fileData = [NSData dataWithContentsOfFile:fileAtPath];

    [mailComposer addAttachmentData:fileData mimeType:@"text/csv" fileName:fileName];

    transectFile2Ext = [NSString stringWithFormat:@".txt"]; NSString *string4 = @"删除笔记";

    NSString *tempString3 = [transectNameString stringByAppendingString:string4]; NSString *tempString4 = [tempString3 stringByAppendingString:transectFile2Ext];

    file2Name = tempString4; file2AtPath = [filePath stringByAppendingPathComponent:file2Name]; NSData *file2Data = [NSData dataWithContentsOfFile:file2AtPath];

    [mailComposer addAttachmentData:file2Data mimeType:@"text/txt" fileName:file2Name];

    [self presentViewController:mailComposer animated:YES completion:nil];

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多