繁体   English   中英

无法转换类型[[String:Any]? 到预期的参数类型“ _?”

[英]Cannot convert value of type '[String:Any]?' to expected argument type '_?'

P和R是通用类型

open func route<P,R>(url:URL , param : P? ) -> R?{
    guard let s = url.scheme ,let h = url.host  else{
        #if DEBUG
            print("url error")
        #endif
        return nil
    }

    let urlString = "\(s)://\(h)\(url.path)"


    guard let t = self.urlTaskMap[urlString] as? RoyTaskClosure<P,R> else {

        print("closure unmatched,url -> \(urlString)")

        return nil
    }

    let returnValue = t(param)

    return returnValue
}

当我像

public func viewController(url:URL,param:[String:Any]?) -> RoyProtocol?{
    if let vc = self.route(url: url, param: param){
        return vc
    }
    return nil
}

Xcode向我显示错误消息

Cannot convert value of type '[String:Any]?' to expected argument type '_?'

神! 有人可以告诉我如何解决吗?

我找到了解决方案。用这个替换您的方法

public func viewController(url:URL,param:[String:Any]?) -> RoyProtocol?{
    let vc: RoyProtocol? = self.route(url: url, param: param)
    return vc
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM