Инициализатор для условной привязки должен иметь необязательный тип, а не «DynamicLinks».

Я получаю эту ошибку при создании приложения для iOS.

Ошибка отображения в строке, которую я выделил здесь жирным шрифтом

это мой код

@available(iOS 8.0, *)
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    **guard let dynamicLinks = DynamicLinks.dynamicLinks() else {**
        return false
    }
    let handled = dynamicLinks.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        self.openURL(url: userActivity.webpageURL!)
    }

    if !handled {
        if let url = userActivity.webpageURL?.absoluteString {
            self.openURL(url: URL(string: url)!)
        }
    }
    return handled
}

person Cebaca App    schedule 06.10.2018    source источник
comment
Кажется, что эта функция не возвращает необязательное значение, поэтому вы не можете использовать условное присваивание.   -  person Paulw11    schedule 06.10.2018
comment
Тег полужирный не действует в разделе кода. dynamicLinks(), очевидно, не является необязательным, поэтому оператор защиты не имеет смысла. просто напиши let handled = DynamicLinks.dynamicLinks().handleUniversalLink...   -  person vadian    schedule 06.10.2018
comment
@vadian, я думаю, он пытался показать, в чем была его ошибка. :)   -  person Rakesha Shastri    schedule 06.10.2018
comment
Вам не нужно условное присвоение там. Замените guard let простым присвоением let dynamicLinks = DynamicLinks.dynamicLinks()   -  person Rakesha Shastri    schedule 06.10.2018
comment
@RakeshaShastri привет, я заменил код на let, но ошибка все еще отображается   -  person Cebaca App    schedule 06.10.2018
comment
@vadian Я попробовал это, пусть обработано = DynamicLinks.dynamicLinks().handleUniversalLink... но ошибка все еще есть   -  person Cebaca App    schedule 06.10.2018
comment
Я хотел также удалить все выражение guard.   -  person vadian    schedule 06.10.2018
comment
@vadian после удаления этого выражения я получаю эту ошибку Использование неразрешенного идентификатора 'dynamicLinks'   -  person Cebaca App    schedule 06.10.2018
comment
Если DynamicLinks.dynamicLinks() выдает ошибку условной привязки, компилятор знает идентификатор. Вы уверены, что добавили круглые скобки после dynamicLinks?   -  person vadian    schedule 06.10.2018


Ответы (1)


По-видимому, DynamicLinks.dynamicLinks() не дает необязательного результата. Измените свой код на это:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {

    let dl = DynamicLinks.dynamicLinks()

    let handled = dl.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        self.openURL(url: userActivity.webpageURL!)
    }

    if !handled {
        if let url = userActivity.webpageURL?.absoluteString {
            self.openURL(url: URL(string: url)!)
        }
    }
    return handled
}
person ielyamani    schedule 06.10.2018