2013-03-01 2 views
0

Я написал небольшой скрипт в xcode, который берет CSV-файл внутри моего приложения и отправляет его в виде вложения. Когда я нажимаю на кнопку электронной почты, все работает (т. Е. Тема, тело и т. Д.). Он также показывает файл CSV, но когда я проверяю свой адрес электронной почты, я вижу все, кроме файла csv. Я в тупике. Вот код, который я использую. Я также попытался имя файла: @ "isitlist.csv Файл CSV находится в моей основной папкеПрикрепление CSV внутри приложения не работает

if ([MFMailComposeViewController canSendMail]) 
{ 
    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 

    mailer.mailComposeDelegate = self; 

    [mailer setSubject:@"Guest List Form"]; 

    NSArray *toRecipients = [NSArray arrayWithObjects:@"", nil]; 
    [mailer setToRecipients:toRecipients]; 

    [mailer addAttachmentData:[NSData dataWithContentsOfFile:@"isit_list.csv"] 
        mimeType:@"text/csv" 
        fileName:@"isit_list"]; 

    [self presentModalViewController:mailer animated:YES]; 

    NSString *emailBody = @"Please fill out the attached file and then email it back to us. Also, please attach some photos to use for the slideshow. We suggest no more than 10."; 
    [mailer setMessageBody:emailBody isHTML:NO]; 

    // only for iPad 
    // mailer.modalPresentationStyle = UIModalPresentationPageSheet; 

    [self presentModalViewController:mailer animated:YES]; 

    [mailer release]; 

ответ

0

I`m сталкиваются с той же проблемой, как вы сейчас и в поисках решения я обнаружил... одна особенность IOS и Mac OS.

причина, почему вы не можете отправить файл очень просто, это потому, что вы не можете создать файл, чтобы ваше приложение пачке или папку IOS документов.

Например, если вы создаете файл и вставляете его в папку приложения на XCODE, чем используете его в качестве вложения в mailComposeViewController, вы получите письмо с файлом в виде e xpected. стрессовая часть здесь заключается в том, что вы даже не можете обновлять содержимое файла внутри своего приложения.

Если вы выполните тест с использованием Xcode и LOTS NSLOG для отслеживания кода и потока данных, вы увидите, что ваш код будет работать в Mac OS, но если вы запустите симуляцию на устройстве, вы будете найти совершенно другой сценарий.

SANDBOX iOS запрещает эту операцию, главным образом для защиты информации пользователя. Но есть надежда!

Одним из возможных решений для обмена данными, создаваемыми внутри приложения, является передача этой информации в виде NSString в MailComposerViewController, так что вы не можете отправить нужные данные.

Да, да ... я знаю, это не изящно, но это то, что мы получили до сих пор.

, если вы обнаружили способ сделать это без использования тюремного устройства, которое ваше устройство разделяет с нами.

+0

Я нашел решение. Он отправляет информацию в виде файла CSV, но для этого мне нужно было использовать NSString. – MagicAlbum

+0

, но вам удалось отправить файл CVS с данными, которые вы хотели? вы могли бы поделиться своим кодом? – LucasCLeal

0

Добавьте это в viewcontroller.m

импорт MessageUI/MFMailComposeViewController.h

импорт MessageUI/MessageUI.h

Затем добавьте это:

- (IBAction) Отправить :(идентификатор) отправитель; {

if ([MFMailComposeViewController canSendMail]) 
{ 

    NSString *textFileContentsString = @"Last Name (i.e. Smith), First Name (i.e. Mr and Mrs. James), Table Number (i.e. 7)\nJones,Mr and Mrs Steve, 6\nJames,Mr and Mrs Albert,8\nJohnson, Mr and Mrs Fred, 7"; 
    NSData *textFileContentsData = [textFileContentsString dataUsingEncoding:NSASCIIStringEncoding]; 
    MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init]; 
    mailComposeViewController.mailComposeDelegate = self; 
    NSArray *toRecipients = [NSArray arrayWithObject:@""]; 
    [mailComposeViewController setSubject:@"My Sample Project"]; 
    [mailComposeViewController setMessageBody:@"Send this email to the email address that you use on the iPad. When you open it in your email you will first save the photos to your camera roll by pressing and holding on the image. Then you will press on the isit_list.csv file and click on 'Open in iSIT'. You will then see a message that the data has been imported. You will then create your event by pressing on 'Enter Seating Admin'. Enter in the Couple's Names, Event Date, Select Photos (these are photos for the slideshow), then click 'Save Event'. You will notice the event is saved. To start the event click on 'Load Event', select a Theme to use, then click 'Launch Event'. The sample data in the CSV file only contains a few names which all have a last name that start with'J'. So click on 'J' when you see the alphabet screen. " isHTML:NO]; 
    [mailComposeViewController addAttachmentData:textFileContentsData mimeType:@"text/plain" fileName:@"isit_list.csv"]; 

    [mailComposeViewController setToRecipients:toRecipients]; 
    [self presentModalViewController:mailComposeViewController animated:YES]; 
} 
else 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure" 
                message:@"Your device doesn't support the composer sheet" 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 

} 

}

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