【问题标题】:Problems with code when updating to Swift 2.0. "Cannot convert value.."更新到 Swift 2.0 时出现代码问题。 “无法转换价值..”
【发布时间】:2015-10-04 10:47:31
【问题描述】:

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

其中之一是:“无法将 '[AnyObject]' 类型的值转换为预期的参数类型 '[String]?

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

错误在 func lanzarEmail 中的以下行:

mailController?.setToRecipients(recipients)

代码:

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)



    })



}



}

【问题讨论】:

    标签: ios string swift arguments


    【解决方案1】:

    尝试将行 var destinatario: AnyObject! 更改为 var destinatario: String!。或者 let destinatario = "1234@hotmail.es" 如果它是常数值。

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

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      相关资源
      最近更新 更多