Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MFMailComposeViewController初始化无参数_Ios_Swift_Mfmailcomposeviewcontroller - Fatal编程技术网

Ios MFMailComposeViewController初始化无参数

Ios MFMailComposeViewController初始化无参数,ios,swift,mfmailcomposeviewcontroller,Ios,Swift,Mfmailcomposeviewcontroller,我正在尝试在Swift中创建以下扩展: extension MFMailComposeViewController { convenience init(document: Document) { self.init() // do some configuration... setMessageBody("BlaBlaBla", isHTML: false) } } 但是,我无法将其编译: 无法在没

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

    extension MFMailComposeViewController {

      convenience init(document: Document) {
        self.init()

        // do some configuration...
        setMessageBody("BlaBlaBla", isHTML: false)
      }

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

无法在没有参数的情况下调用“MFMailComposeViewController.init”

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


如果您有任何关于如何解决此问题的帮助,我们将不胜感激。

对于子分类,请使用
super.init()
而不是
self.init()
;对于扩展self

如果您在设备或模拟器上运行应用程序而未检查canSendMail方法,通过使用空参数(默认的init方法)初始化对象,您将获得一个
nil
对象

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

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)
    }

}

这是一个令人信服的初始化器,因此使用super给了我:“MFMailComposeViewController的便利初始化器必须委托(使用'self.init'),而不是链接到超类初始化器(使用'super.init')”。这是预期的…导入MessageUI类文档{var name:String?}扩展名MFMailComposeViewController{便利初始化(文档:文档){self.init()//进行一些配置…setMessageBody(“BlaBlaBla”,isHTML:false)}
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)
    }

}