Вызов переменных в электронную почту приложения - PullRequest
0 голосов
/ 26 февраля 2011

Привет всем, я пытаюсь захватить переменные из текстовых полей на моем интерфейсе и использовать их в электронном письме, которое вызывается кнопкой, расположенной непосредственно под этими кнопками.Я следовал учебному пособию, чтобы показать мне, как это сделать, форматируя с использованием файла .html, и я не смог фактически заменить эти заполнители в файле!Если кто-то может сказать мне, что я делаю неправильно, или что будет работать, это будет оценено!

Вот код из файла реализации в методе нажатия кнопки электронной почты

- (IBAction)email:(id)sender {
    MFMailComposeViewController *compose = [[MFMailComposeViewController alloc] init];
    compose.mailComposeDelegate = self;

    [compose setSubject:@"Float Plan for my Boat Trip"];
    [compose setCcRecipients:[NSArray arrayWithObject:@"towboat911@gmail.com"]];

    NSUserDefaults *person = [NSUserDefaults standardUserDefaults];
    [person setObject:personField.text forKey:@"person"];

    NSUserDefaults *pob = [NSUserDefaults standardUserDefaults];
    [pob setObject:pobField.text forKey:@"pob"];

    NSUserDefaults *phone = [NSUserDefaults standardUserDefaults];
    [phone setObject:phoneField.text forKey:@"phone"];

    NSUserDefaults *medical = [NSUserDefaults standardUserDefaults];
    [medical setObject:medicalField.text forKey:@"medical"];

    NSUserDefaults *depart = [NSUserDefaults standardUserDefaults];
    [depart setObject:departField.text forKey:@"depart"];

    NSUserDefaults *left = [NSUserDefaults standardUserDefaults];
    [left setObject:leftField.text forKey:@"left"];

    NSUserDefaults *arrive = [NSUserDefaults standardUserDefaults];
    [arrive setObject:arriveField.text forKey:@"arrive"];

    NSUserDefaults *destination = [NSUserDefaults standardUserDefaults];
    [destination setObject:destinationField.text forKey:@"destination"];


    NSString *emailFileName = [NSString stringWithFormat:@"email_en_US.html"];
    NSString *emailFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: emailFileName];
    NSString *body = [NSString stringWithContentsOfFile:emailFilePath encoding:NSUTF8StringEncoding error:nil];

    body = [body stringByReplacingOccurrencesOfString:@"//PERSON//" withString:@"person"];
    body = [body stringByReplacingOccurrencesOfString:@"//PERSONSIGN//" withString:@"person"];
    body = [body stringByReplacingOccurrencesOfString:@"//POB//" withString:@"pob"];
    body = [body stringByReplacingOccurrencesOfString:@"//PHONE//" withString:@"phone"];
    body = [body stringByReplacingOccurrencesOfString:@"//MEDICAL//" withString:@"medical"];
    body = [body stringByReplacingOccurrencesOfString:@"//DEPART//" withString:@"depart"];
    body = [body stringByReplacingOccurrencesOfString:@"//LEFT//" withString:@"left"];
    body = [body stringByReplacingOccurrencesOfString:@"//ARRIVAL//" withString:@"arrive"];
    body = [body stringByReplacingOccurrencesOfString:@"//DESTINATION//" withString:@"destination"];

    NSString *emailBody = [NSString stringWithFormat:body];
    [compose setMessageBody:emailBody isHTML:YES];

    compose.navigationBar.barStyle = UIBarStyleBlack;

    [self presentModalViewController:compose animated:YES];
    [compose release];

}

1 Ответ

0 голосов
/ 26 февраля 2011

Строки, которые заменяют строки в теле, выглядят неправильно. Например, это:

body = [body stringByReplacingOccurrencesOfString:@"//PERSON//" 
           withString:@"person"];

вероятно должно быть так:

body = [body stringByReplacingOccurrencesOfString:@"//PERSON//" 
           withString:personField.text];

То же самое относится и к остальным строкам stringByReplacingOccursionsOfString.


Кроме того, вам не нужно создавать отдельную ссылку на NSUserDefaults для каждого ключа, который вы хотите сохранить. Поэтому вместо объявления NSUserDefaults *person, NSUserDefaults *pob и т. Д. Просто объявите одну ссылку, например NSUserDefaults *defaults, и используйте ее для всех вызовов setObject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...