2013-06-04 124 views
0

要发送电子邮件时节省用户时间,用户保存在有一个首选项页面中的电子邮件地址应该填写预收件人的电子邮件时,组成。 (或那是什么我尝试做的),这里是IM卡,怎么用自己保存的字符串转换为对象的预填充收件人的目的。添加保存的电子邮件串电子邮件收件人

当前字符串不预先填写收件人

保存在这里的偏好页:

NSString *savecontents = _emailAddress.text; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:savecontents forKey:@"saveEmail"]; 
[defaults synchronize]; 

读这里的邮件视图呈现

- (IBAction)email:(id)sender { 

NSString *savedValue = [[NSUserDefaults standardUserDefaults] <---------- saved email string 
         stringForKey:@"saveEmail"]; 



if ([MFMailComposeViewController canSendMail]) { 

    MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init]; 
    mail.mailComposeDelegate = self; 

    NSArray *toRecipients = [NSArray arrayWithObject:savedValue]; <------- trying to get string here 
    [mail setToRecipients:toRecipients]; 

    [mail setSubject:@"subject"]; 
    NSString *emailBody = [NSString stringWithFormat: @"text here"] ; 
    [mail setMessageBody:emailBody isHTML:YES]; 

    mail.modalPresentationStyle = UIModalPresentationPageSheet; 
    [self presentModalViewController:mail animated:YES]; 

} 

试过至今:

NSArray *toRecipients = [NSString stringWithFormat:savedValue]; 
    [mail setToRecipients:toRecipients]; 

NSArray *toRecipients = [NSString stringWithFormat:@"%@",savedValue]; 
    [mail setToRecipients:toRecipients]; 

谷歌,SO和办公桌

+0

请NSLog的了''savedValue的。这是对的吗 ? –

+0

你不提这里的问题。您发布的代码的主要位是正确的(不是确保'savedValue'不是'nil'等)。但最后两个小小的代码肯定是错误的。但是原始代码是正确的。你为什么问这个问题?与你期望发生的事情相比,发生了什么? – rmaddy

回答

1

拳头敲打所有你需要的是这样的:

if (savedValue.length) { 
    [mail setToRecipients:@[ savedValue ]]; 
} 

本采用现代的Objective-C数组语法。这将是一样的:

if (savedValue.length) { 
    NSArray *toRecipients = [NSArray arrayWithObject:saveValue]; 
    [mail setToRecipients:toRecipients]; 
} 

你有你想的NSString的值赋给变量NSArray的代码。

另外,请不要使用stringWithFormat,除非你确实有必要格式的字符串。

+0

谢谢你,原来的代码是正确的,正如你所说的,一个干净的调试器电子邮件地址显示不是一个正确的格式,错误的时候我猜测试。感谢您使用新语法的提示,并正确注意到带格式的重新字符串 – JSA986