2017-02-17 19 views
0

私は私のアプリで電子メールを送信するためにユーザを可能にしようとしているが、私は得る:その宣言する前に、ローカル変数「configureMailComposeViewController」のローカル変数宣言迅速

使用を

ここにコードがあります。

func item(_ item: Int, selectedAtContactIndex index: Int) { 
    var mailComposeViewController = configuredMailComposeViewController() 
    if MFMailComposeViewController.canSendMail() { 
     self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
    } else { 

    } 
} 

func configuredMailComposeViewController() -> MFMailComposeViewController{ 
    let mailComposerVC = MFMailComposeViewController() 
    mailComposerVC.mailComposeDelegate = self 

    mailComposerVC.setToRecipients([EmailAddressArray[index]]) 
    mailComposerVC.setSubject("I need your help") 

    return mailComposerVC 
} 

Image of the Error

+1

) '? – rmaddy

+0

@john、どういう意味ですか? 'MFMailComposeViewController()' – aircraft

答えて

1
func configuredMailComposeViewController() -> MFMailComposeViewController 

configuredMailComposeViewController機能を入れたあなたは意志このメソッドを呼び出すときに取得します。結果を返します。

上記のメソッドfunc configuredMailComposeViewController() -> MFMailComposeViewControllercallの結果は、空中に飛ばすことができない変数に保存する必要があります。このメソッドを保存または取得するには、これを行う必要があります。

var mailComposeViewController = configuredMailComposeViewController() 

だから、これはあなたがいない前に、あなたのリターン機能した後、このmailComposeViewController = configuredMailComposeViewController()を呼び出す必要があることが明確になります。

正確this-:あなたは `(MFMailComposeViewController.canSendMail場合呼び出す前に、あなたは` configuredMailComposeViewController`を呼び出すなぜによって無関係

func configuredMailComposeViewController() -> MFMailComposeViewController{ 
     let mailComposerVC = MFMailComposeViewController() 
     mailComposerVC.mailComposeDelegate = self 

     mailComposerVC.setToRecipients([EmailAddressArray[index]]) 
     mailComposerVC.setSubject("I need your help") 

     return mailComposerVC 
    } 





     func item(_ item: Int, selectedAtContactIndex index: Int) { 

     if MFMailComposeViewController.canSendMail() { 
var mailComposeViewController = configuredMailComposeViewController() 
      self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
     } else { 

     } 
    } 
+1

そして、あなたは本当に 'var mailComposeViewController = configuredMailComposeViewController()'を'if'ステートメント。電子メールを送信できない場合は、メールコンポーザーを作成することは意味がありません。 – rmaddy

0

スイッチ機能の順序は、ここでこの権利は、戻り値の型MFMailComposeViewControllerを持っているあなたの関数であるトップ

func configuredMailComposeViewController() -> MFMailComposeViewController{ 
    let mailComposerVC = MFMailComposeViewController() 
    mailComposerVC.mailComposeDelegate = self 

    mailComposerVC.setToRecipients([EmailAddressArray[index]]) 
    mailComposerVC.setSubject("I need your help") 

    return mailComposerVC 
} 





    func item(_ item: Int, selectedAtContactIndex index: Int) { 
    var mailComposeViewController = configuredMailComposeViewController() 
    if MFMailComposeViewController.canSendMail() { 
     self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
    } else { 

    } 
} 
+0

私は混乱しています。あなたの話題を編集することができますか? – john

+0

私は答えを編集しました。 – inzo