ios - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 'DynamicLinks'

标签 ios swift xcode swift3 firebase-dynamic-links

我在构建 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
}

最佳答案

显然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
}

关于ios - 条件绑定(bind)的初始化程序必须具有可选类型,而不是 'DynamicLinks',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52677747/

相关文章:

ios - 如何将 Apple SpeechSynthesis AudioUnit 与 AudioKit 结合使用?

ios - 带有较长标签的标签 ListView 未在 iOS swift 中完全显示

ios - SpriteKit 在转换到新场景时收到有关 UIElements 的错误

ios - Swift 函数从异步 firebase 调用返回值

ios - 带有一个 Storyboard的 Xcode 通用应用程序

ios - 在 native ios 中监听事件

ios - 具有 '-' 字符的字符串在 iOS 的 drawrect 方法中未正确绘制

ios - 我想使用 JTAppleCalendar 库显示一个简单的日历,但它显示一个空屏幕

ios - 添加了 iPad Storyboard,现在为 : "expected to have a root view controller..."

swift - SIGABRT 与 Xcode 使用 Swift