Поле имеет значение подтверждено, но все еще получить ошибку развертки?

Этот блок кода завершается неудачно при попытке установить 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 ответ

Решение

Я предлагаю сделать это лучше:

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 проверяет и не принудительно разворачивает значения позже.

Другие вопросы по тегам