MFMailComposeViewController init no arguments



我正在尝试在Swift中创建以下扩展名:

    extension MFMailComposeViewController {
      convenience init(document: Document) {
        self.init()
        // do some configuration...
        setMessageBody("BlaBlaBla", isHTML: false)
      }
    }

但是,我无法将其编译为:

无法调用没有参数的'mfmailcomposeviewcontroller.init'

对我来说似乎很奇怪,因为MFMailComposeViewController肯定有一个没有参数的初始评估器。

关于如何解决此问题的任何帮助将不胜感激。

用于sublcassing使用 super.init()而不是 self.init(),而用于扩展为self

出现错误的原因是,如果您在设备或模拟器上运行该应用而不检查CanSendMail方法,则会通过使用空参数启动nil对象(默认INIT MATECT)。

extension MFMailComposeViewController {
    convenience init?(document: UIImage) {
        guard MFMailComposeViewController.canSendMail() else { return nil }
        self.init()
        // continue setup the controller

    }
}

您可以在模拟器上对此进行测试,而无需通过以下代码设置任何电子邮件帐户:

class FirstViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        let controller: MFMailComposeViewController? = MFMailComposeViewController()
        guard let mail = controller else { return }
        present(mail, animated: true, completion: nil)
    }
}

相关内容

最新更新