【问题标题】:NSURL Throws nil exception using mailto:NSURL 使用 mailto 抛出 nil 异常:
【发布时间】:2016-02-25 14:26:46
【问题描述】:

我试图在 UILabel 点击事件上打开邮件。但它会引发致命错误:

在展开 Optional 值时意外发现 nil。

使用的代码:

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

【问题讨论】:

    标签: ios swift uilabel nsurl openurl


    【解决方案1】:

    检查以确保self.lblMail.text 不为零,然后再使用if let 解包:

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

    如果出现错误:

    LaunchServices: 错误: URL 方案 mailto 没有注册处理程序

    确保您在实际设备而不是 iOS 模拟器上运行此代码。

    【讨论】:

    • 谢谢,我遇到了同样的错误。所以这意味着它是因为我使用的是模拟器?
    • @user2695433 查看我的更新答案。尝试在实际设备上运行。
    【解决方案2】:

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

    【讨论】:

    • 它显示错误:没有为 URL 方案 mailto 注册的处理程序,是因为我使用的是模拟器而不是设备
    • 但它不会像以前那样崩溃,不是吗?
    • 是的,我认为这是因为模拟器的使用。设备应该处理这样的 url
    猜你喜欢
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多