2012-05-20 2 views
2

Я хотел бы создать файл с помощью NSString (уже сделанного) с расширением .csv, а затем отправить его по электронной почте с использованием инфраструктуры UIMessage. Так может ли кто-нибудь показать мне код для создания файла (с расширением .csv и с содержимым NSString), то как подключить его к MFMailComposeViewController.Email CSV-файл с MFMailComposer

+1

Что вы пробовали? Существует метод под названием 'addAttachmentData: mimeType: fileName:'. Каким образом это не работает? –

+0

@ stephen-darlington Да, я знаю, как это использовать, но мне просто интересно, как сделать CSV-файл, а затем сжать его в NSData, чтобы я мог его прикрепить. – ManOx

ответ

11

Это, как вы вложите файл CSV в MFMailComposeViewController:

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
    mailer.mailComposeDelegate = self; 
    [mailer setSubject:@"CSV File"];   
    [mailer addAttachmentData:[NSData dataWithContentsOfFile:@"PathToFile.csv"] 
        mimeType:@"text/csv" 
        fileName:@"FileName.csv"]; 
    [self presentModalViewController:mailer animated:YES]; 

    // Note: PathToFile.csv is the actual path of the file on your iOS device's 
    // file system. FileName.csv is what it should be displayed as in the email. 

Насколько, как генерировать CSV сам файл, то CHCSVWriter класс в https://github.com/davedelong/CHCSVParser поможет вам.

3

Вот части, где вы создаете новый csv, сохраните его в файле и прикрепите его в одном. Вы знаете, если вы находитесь в таком виде

NSString *emailTitle = @"My Email Title"; 
NSString *messageBody = @"Email Body"; 

MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
mc.mailComposeDelegate = self; 
[mc setSubject:emailTitle]; 
[mc setMessageBody:messageBody isHTML:NO]; 
[mc setToRecipients:@[]]; 

NSMutableString *csv = [NSMutableString stringWithString:@""]; 

//add your content to the csv 
[csv appendFormat:@"MY DATA YADA YADA"]; 

NSString* filePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString* fileName = @"MyCSVFileName.csv"; 
NSString* fileAtPath = [filePath stringByAppendingPathComponent:fileName]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:fileAtPath]) { 
    [[NSFileManager defaultManager] createFileAtPath:fileAtPath contents:nil attributes:nil]; 
} 

BOOL res = [[csv dataUsingEncoding:NSUTF8StringEncoding] writeToFile:fileAtPath atomically:NO]; 

if (!res) { 
    [[[UIAlertView alloc] initWithTitle:@"Error Creating CSV" message:@"Check your permissions to make sure this app can create files so you may email the app data" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles: nil] show]; 
}else{ 
    NSLog(@"Data saved! File path = %@", fileName); 
    [mc addAttachmentData:[NSData dataWithContentsOfFile:fileAtPath] 
        mimeType:@"text/csv" 
        fileName:@"MyCSVFileName.csv"]; 
    [self presentViewController:mc animated:YES completion:nil]; 
} 
+0

спасибо, это мне очень помогло – dowi

Смежные вопросы