Search code examples
iosswiftappdelegateappsflyerappsflyer-ios-sdk

Initializer for conditional binding must have Optional type, not '[AnyHashable : Any]'


when I type like this :

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

I got error "Initializer for conditional binding must have Optional type, not '[AnyHashable : Any]'" on this line if let data = attributionData

How to repair that?


Solution

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

    your attributionData should be optional type, if let data = attributionData if let case is used to safely unwrap an optional value. But currently you are passing a non optional value to it. So you have two options. Either to make attributionData as optional, or remove if let statement

    Option 1:

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

    Option 2:

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