gpt4 book ai didi

ios - 邮件附件没有内容

转载 作者:行者123 更新时间:2023-11-28 21:50:15 25 4
gpt4 key购买 nike

我正在尝试通过电子邮件发送我应用中用户数据的 CSV 副本,并且尝试了几种不同的方法。它在邮件 View Controller 中显示为“Backup.csv”,但是当我通过电子邮件发送它时,当我收到电子邮件时没有内容。可能是什么原因造成的?

-(void)backupDatabase {
NSString *CSVstring = [NSString string];
for (SELVendor *vendor in [[SELVendorStore store] allVendors]) {
[CSVstring stringByAppendingString:[NSString stringWithFormat:@"\"vendor\",\"%@\",\"%@\",\"%@\",\"%@\",%i\n",vendor.name, vendor.phone, vendor.email, vendor.vendorID, vendor.placeOrderByEmail]];
}

// Create CSV file
NSArray *directory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [directory[0] stringByAppendingPathComponent:@"databaseBackup"];
NSError *error;
[CSVstring writeToFile:filePath atomically:false encoding:NSStringEncodingConversionAllowLossy error:&error];
// [[NSFileManager defaultManager]createFileAtPath:filePath contents:nil attributes:nil];
// NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];
// [fileHandle seekToEndOfFile];
// [fileHandle writeData:[CSVstring dataUsingEncoding:NSUTF8StringEncoding]];

// Setup email and attach CSV file
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Inventory App CSV Backup"];
[mailer addAttachmentData:[NSData dataWithContentsOfFile:filePath] mimeType:@"text/csv" fileName:@"Backup.csv"];
[self presentViewController:mailer animated:true completion:nil];
}

最佳答案

NSStringEncodingConversionAllowLossy 不是有效的字符串编码。
您基本上是在使用 NSASCIIStringEncoding 因为您使用了错误的枚举。因此,如果您的字符串不是严格的 ASCII,则它无法转换为 NSData,也不会写入磁盘。

首先检查文件是否可以写入磁盘。即

if (![CSVstring writeToFile:filePath atomically:false encoding:NSUTF8StringEncoding error:&error]) {
NSLog(@"Could not write file %@", error);
}
else {
MFMailComposeViewController ...
}

编辑:并且您没有将 CSV 行添加到您的字符串中。因此,您将创建一个空字符串。

[CSVstring stringByAppendingString:...]; 创建一个新字符串。但是您没有将该字符串分配给任何东西。

因此将该部分更改为:

NSString *CSVstring = [NSString string];
for (SELVendor *vendor in [[SELVendorStore store] allVendors]) {
CSVstring = [CSVstring stringByAppendingString:[NSString stringWithFormat:@"\"vendor\",\"%@\",\"%@\",\"%@\",\"%@\",%i\n",vendor.name, vendor.phone, vendor.email, vendor.vendorID, vendor.placeOrderByEmail]];
}

或到

NSMutableString *CSVstring = [NSMutableString string];
for (SELVendor *vendor in [[SELVendorStore store] allVendors]) {
[CSVstring appendString:[NSString stringWithFormat:@"\"vendor\",\"%@\",\"%@\",\"%@\",\"%@\",%i\n",vendor.name, vendor.phone, vendor.email, vendor.vendorID, vendor.placeOrderByEmail]];
}

关于ios - 邮件附件没有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28601557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com