Инициализатор для условного связывания должен иметь тип 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

Как это исправить?

1 ответ

Решение
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)")
     }
  }
}
Другие вопросы по тегам