字段已确认值但仍会出现解包错误?

时间:2016-04-28 11:53:25

标签: swift2 optional unwrap forced-unwrapping

这个代码块在尝试设置appURL时失败,即使if测试成功并且托管对象联系人将所有字段设置为非零值并且某些contact.facebook有值,所以我不明白为什么我是在试图打开时发现是否为零?

func openFacebook() {

    if (contact.facebook) != nil && (contact.facebook) != "" {

        // build url to users facebook page
        let appURL = NSURL(string: String(format: "fb://profile=%@", contact.facebook!))!

        // build url to user page on facebook web site
        let webURL = NSURL(string: String(format: "http://www.facebook.com/%@", contact.facebook!))!

        openURL(appURL, webURL: webURL)
    }
}

1 个答案:

答案 0 :(得分:1)

我建议以更好的方式做到:

func openFacebook() {

    if let contact = contact.facebook where contact != "" {

        // build url to users facebook page
        let appURL = NSURL(string: String(format: "fb://profile=%@", contact))!

        // build url to user page on facebook web site
        let webURL = NSURL(string: String(format: "http://www.facebook.com/%@", contact))!

        openURL(appURL, webURL: webURL)
    }
}

我认为这将是一种更清晰的方式来进行nil检查,而不是在以后强制解包值。