当我这样输入时:

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]!) {
    if let data = attributionData {
        if let link = data["link"]{
            print("link:  \(link)")
        }
    }
}


我在此行if let data = attributionData上收到错误消息“用于条件绑定的初始化程序必须具有可选类型,而不是'[AnyHashable:Any]'”

如何修复?

最佳答案

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]?) {


您的attributionData应该是可选类型,如果使用let case来安全地解开可选值,则为if let data = attributionData。但是目前您正在传递一个非可选值。因此,您有两个选择。可以将attributionData设置为可选,或删除if let statement

选项1:

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]?) {
    if let data = attributionData {
        if let link = data["link"]{
            print("link:  \(link)")
        }
    }
}


选项2:

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]) {
    let data = attributionData
    if let link = data["link"]{
       print("link:  \(link)")
     }
  }
}

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

10-08 23:39