2016-08-23 192 views
0

我试图从swift使用联系人详细信息打开MailComposeViewController。一切正常,当我点击联系人的电子邮件,页面打开,但我想用我刚刚点击的电子邮件填充收件人电子邮件字段,但我不知道该怎么做。从联系人详细信息获取电子邮件地址

这里是我的代码:

func contactPicker(picker: CNContactPickerViewController, didSelectContactProperty contactProperty: CNContactProperty) { 

    if MFMailComposeViewController.canSendMail() { 

     let mail = MFMailComposeViewController() 

     mail.mailComposeDelegate = self 

     //This doesn't work, only asks for a string. 
     mail.setToRecipients(["\(contactProperty.value)"]) 


     self.dismissViewControllerAnimated(true, completion: {() -> Void in 
      self.presentViewController(mail, animated: true, completion: nil) 
     }) 

    } else { 
     print("send error") 
    } 
} 

我只能添加字符串mail.setToRecipients。当我使用contactProperty.value时,它给了我这个错误:

可选([email protected])不是有效的电子邮件地址。

+0

使用 '作为' 替代的地址...中庸分配 –

+0

我怎么做之前解开呢?对不起,刚刚这个。 – art3mis

回答

1

CNContactProperty.value类型为AnyObject?这意味着它是可选的。
所以你需要安全地解开它并将其作为字符串进行投射。

试试这个

mail.setToRecipients(["\(contactProperty.value)"]) 

if let emailAddress = contactProperty.value as? String { 
     mail.setToRecipients([emailAddress]) 
    } 
+0

这工作完美,谢谢:) – art3mis

相关问题