Инициализатор для условного связывания должен иметь необязательный тип, а не «[AnyHashable: Any]» - PullRequest
0 голосов
/ 22 января 2020

когда я печатаю так:

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

Я получил ошибку "Инициализатор условного связывания должен иметь необязательный тип, а не '[AnyHashable: Any]'" в этой строке if let data = attributionData

Как это починить?

1 Ответ

3 голосов
/ 22 января 2020
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)")
     }
  }
}
...