收到此错误:条件绑定的初始化程序必须具有可选类型,而不是“布尔”

Posted

技术标签:

【中文标题】收到此错误:条件绑定的初始化程序必须具有可选类型,而不是“布尔”【英文标题】:Getting this error : Initializer for conditional binding must have Optional type, not 'Bool' 【发布时间】:2018-11-20 10:32:14 【问题描述】:
func application(_ app: UIApplication, open url: URL, options:
        [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 

        if let isDynamicLink = DynamicLinks.dynamicLinks() .shouldHandleDynamicLink(fromCustomSchemeURL: url) 
            let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
            return handleDynamicLink(dynamicLink)
        
        return true
    

【问题讨论】:

shouldHandleDynamicLink方法的返回类型是什么? 布尔返回类型 那你就不需要可选链了。 dynamicLinks()的返回类型是什么? 【参考方案1】:

⌥-click shouldHandleDynamicLink 你会看到声明

func shouldHandleDynamicLink(fromCustomSchemeURL url: URL) -> Bool

返回类型是非可选的。移除可选绑定

func application(_ app: UIApplication, open url: URL, options:
    [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool 

    if DynamicLinks.dynamicLinks().shouldHandleDynamicLink(fromCustomSchemeURL: url) 
        let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
        return handleDynamicLink(dynamicLink)
    
    return true

【讨论】:

以上是关于收到此错误:条件绑定的初始化程序必须具有可选类型,而不是“布尔”的主要内容,如果未能解决你的问题,请参考以下文章

快速获取条件绑定的错误初始化程序必须具有可选类型,为啥?

条件绑定的初始化程序必须具有可选类型,而不是“Bool”-firebase

条件绑定的初始化程序必须具有可选类型,而不是“UIView”

条件绑定的初始化程序必须具有可选类型,而不是“UIView”

条件绑定:if let error - 条件绑定的初始化程序必须具有可选类型

条件绑定:if let error - 条件绑定的初始化程序必须具有可选类型