【问题标题】:Initializer for conditional binding must have Optional type, not 'DynamicLinks'条件绑定的初始化程序必须具有可选类型,而不是“DynamicLinks”
【发布时间】:2019-03-11 16:15:18
【问题描述】:

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

【问题讨论】:

  • 好像那个函数没有返回一个可选项,所以你不能使用条件赋值。
  • bold 标记在代码段中不起作用。 dynamicLinks() 显然是非可选的,因此保护语句毫无意义。写let handled = DynamicLinks.dynamicLinks().handleUniversalLink...
  • @vadian 我相信他试图表明他的错误在哪里。 :)
  • 那里不需要条件赋值。将guard let 替换为简单的赋值let dynamicLinks = DynamicLinks.dynamicLinks()
  • @RakeshaShastri 嗨,我将代码替换为“let”,但仍然显示错误

标签: ios swift xcode swift3 firebase-dynamic-links


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2017-01-22
    • 2018-03-25
    • 2016-01-08
    • 2017-04-08
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多