Ios 条件绑定的初始值设定项必须具有可选类型,而不是';[AnyHashable:Any]';

Ios 条件绑定的初始值设定项必须具有可选类型,而不是';[AnyHashable:Any]';,ios,swift,appdelegate,appsflyer,appsflyer-ios-sdk,Ios,Swift,Appdelegate,Appsflyer,Appsflyer Ios Sdk,当我这样打字时: func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]!) { if let data = attributionData { if let link = data["link"]{ print("link: \(link)") } } } 如果let data=attributedata 如何修复 func onAppOpenA

当我这样打字时:

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

如何修复

func onAppOpenAttribution(_ attributionData: [AnyHashable : Any]?) {
如果使用let case安全地展开可选值,则AttributeData应该是可选类型,
如果let data=AttributeData
。但目前您正在向它传递一个非可选值。所以你有两个选择。将
attributedata
设置为可选,或者删除
if let语句

备选案文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)")
     }
  }
}
如果使用let case安全地展开可选值,则AttributeData应该是可选类型,
如果let data=AttributeData
。但目前您正在向它传递一个非可选值。所以你有两个选择。将
attributedata
设置为可选,或者删除
if let语句

备选案文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)")
     }
  }
}

使用?后,警告仍然存在“OnApp OpenAttribute”参数的可选性与协议“AppsFlyerTrackerDelegate”替换的预期不同?如果let data=attributedata再次出现另一个错误,则条件绑定的“”之后的“”初始值设定项必须具有可选类型,而不是此行的“[AnyHashable:Any]”。它存在于代码逻辑中。对于你当前的问题,我已经给出了答案。如果您有其他错误,请提出新问题,我们将帮助您:)使用后?),警告仍然存在“OnApp OpenAttribute”参数的可选性与协议“AppsFlyerTrackerDelegate”替换的预期不同?如果let data=attributedata再次出现另一个错误,则条件绑定的“”之后的“”初始值设定项必须具有可选类型,而不是此行的“[AnyHashable:Any]”。它存在于代码逻辑中。对于你当前的问题,我已经给出了答案。如果您有其他错误,请提出新问题,我们将帮助您:)