代码更新到Swift 2.0时出现问题。 “不能转换价值”

我已经更新到2.0 Swift自动转换的代码,但我已经看到了一些错误,但我想修复。

其中之一是:“不能将types[AnyObject]的值转换为期望的参数types'[String]?

创build这个VC是为了启动一个电子邮件屏幕,以帮助用户与我联系。

错误是在func lanzarEmail的以下行中:

mailController?.setToRecipients(收件人)

代码:

import UIKit import MessageUI class tuPropiaHistoriaVC: UIViewController,MFMailComposeViewControllerDelegate { var alert: UIAlertView? var subjectText:String? var destinatario:AnyObject! var mailController:MFMailComposeViewController? @IBOutlet weak var scrollView: UIScrollView! override func viewDidLoad() { super.viewDidLoad() //Recipients subjectText = "Mi historia de éxito / superación." destinatario = "1234@hotmail.es" // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func lanzarEmail(sender: AnyObject) { if(MFMailComposeViewController.canSendMail()){ //AlertView alert = UIAlertView() alert!.addButtonWithTitle("Ok") mailController = MFMailComposeViewController() //asignar delegado al controlador de email mailController?.mailComposeDelegate = self //Completar objeto mailController mailController?.setSubject(subjectText!) var recipients = [destinatario] mailController?.setToRecipients(recipients) self.presentViewController(mailController!, animated: true, completion: nil) }else { let sendMailErrorAlert = UIAlertView(title: "No se puede enviar Email", message: "Por favor configura tu app Mail para poder enviar correos", delegate: self, cancelButtonTitle: "Entendido") sendMailErrorAlert.show() self.dismissViewControllerAnimated(false, completion: nil) } } func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { switch result.rawValue { case MFMailComposeResultCancelled.rawValue: //se cancelo envio alert!.title = "Envio cancelado" alert!.message = "Se canceló el envio" alert!.show() case MFMailComposeResultSaved.rawValue: //se guardo draft alert!.title = "Correo guardado" alert!.message = "Se guardó el correo en la app de Mail" alert!.show() case MFMailComposeResultFailed.rawValue: //fallo el envio alert!.title = "Error" alert!.message = "El correo no pudo ser enviado" alert!.show() case MFMailComposeResultSent.rawValue: //el mail se pudo enviar y esta en la pila de envio alert!.title = "Correo enviado" alert!.message = "El correo se envió exitosamente" alert!.show() default: break } mailController?.dismissViewControllerAnimated(true, //Clousure a ejecutar al finalizar de mostrar la vista completion: { () -> Void in //Cerrar pantalla del view base, requiere que la conexion entre pantallas sea del tipo seague self.dismissViewControllerAnimated(true, completion: nil) }) } } 

尝试改变线var destinatario: AnyObject!var destinatario: String! 。 如果是恒定值,则let destinatario = "1234@hotmail.es"

mailController的方法setToReceipents签名看起来像func setToRecipients(recipients: [String]) (实际上,这是属性var recipients: [String] )。 但是你传递了AnyObject数组,而不是String数组