2016-02-25 4 views
3

Я пытался открыть почту на событие кликов UILabel. Но его бросает фатальную ошибку:NSURL Выбрасывает исключение nil используя mailto:

unexpectedly found nil while unwrapping an Optional value.

код используется:

func sendMail(sender:UITapGestureRecognizer){ 
     print("mail::" + self.lblMail.text!) // [email protected] is here 
     let url = NSURL(string: "mailto:\(self.lblMail.text)")! //url is nil when debugged 
     UIApplication.sharedApplication().openURL(url) 
    } 

ответ

3

Проверьте, чтобы убедиться, что self.lblMail.text не является нулевым, прежде чем перейти на разворачивание его с if let:

if let email = self.lblMail.text { 
    let url = NSURL(string: "mailto:\(email)")! 
    UIApplication.sharedApplication().openURL(url) 
} 

Если вы получаете ошибку:

LaunchServices: ERROR: There is no registered handler for URL scheme mailto

Убедитесь, что вы используете этот код на реальном устройстве, а не на IOS Simulator.

+0

Спасибо, я получаю ту же ошибку. Значит, это значит, потому что я использую симулятор? – user2695433

+0

@ user2695433 См. Мой обновленный ответ. Попробуйте запустить на самом устройстве. – JAL

0

Try let url = NSURL(string: "mailto:\(self.lblMail.text!)")!

+0

Это показывает ОШИБКУ: нет зарегистрированного обработчика схемы URL mailto, это потому, что я использую симулятор вместо устройства – user2695433

+0

, но он не сбой, где он привык, не так ли? –

+0

Нет, это не сбой. – user2695433