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