MailComposer didFinishWith results doesn't work in Swift 3.0
Asked Answered
S

1

5

I converted my app to swift 3.0 and have a problem with MailComposeController. When I call function:

`func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?){
    controller.dismiss(animated: true, completion: nil)
}`

first of all I have an error with info: enter image description here

what is strange for my, becouse I copy and paste this method from MFMailComposeViewControllerDelegate. When I change Error to NSError it works, but I receive a warning with info, this method needs to be private to avoid this warning.

When I'm in mailComposer and see email and try to tap Cancel this controller doesn't disapear. Any solution how to dismiss this controller?

Schaub answered 20/9, 2016 at 19:4 Comment(2)
Same code is working fine for me. Did you clean and rebuild your code?Ectophyte
yes, I do everything what I can, but still have this stupid errorSchaub
H
12

I had the same problem because I was importing RealmSwift, which has its own Error struct.

Fix it by specifying which Error type you want. In this case, Swift.Error.

Full Code:

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Swift.Error?){
    controller.dismiss(animated: true, completion: nil)
}
Hudnall answered 21/9, 2016 at 18:4 Comment(1)
F*cking naming issues. It becomes even more funny once you create your own Error classEnergetics

© 2022 - 2024 — McMap. All rights reserved.