0

此代码块在尝试设置 appURL 时失败,即使 if 测试成功并且托管对象联系人的所有字段都设置为非 nil 值,并且对于某些 contact.facebook 有一个值,所以我不明白为什么我会发现 nil试图打开包装?

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)
    }
}
4

1 回答 1

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检查方式,并且以后不会强制解包值。

于 2016-04-28T17:55:30.327 回答