首页 > 解决方案 > 条件绑定的初始化程序必须具有 Optional 类型,而不是 '[AnyHashable : Any]'

问题描述

当我这样输入时:

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

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

如何修复它?

标签: iosswiftappdelegateappsflyerappsflyer-ios-sdk

解决方案


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

你的 attributionData 应该是可选类型,if let data = attributionData如果 let case 用于安全地解开可选值。但是目前您正在向它传递一个非可选值。所以你有两个选择。要么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)")
     }
  }
}

推荐阅读