条件绑定的初始化程序必须具有可选类型,而不是'[String:Double]'

时间:2019-04-07 04:44:37

标签: xcode

对于类似的问题,我已经阅读了堆栈溢出中的所有答案,并尝试了针对它们的建议,但无法解决此错误(条件绑定的Initializer必须具有可选类型,而不是'[String:Double]'),这种情况会发生在“ if let jsonDictionary = json {”行上。请帮忙!预先感谢!

func getPrice(cprCcy: String, ccy: String){
    if let url = URL(string: "https://min-api.cryptocompare.com/data/price?fsym=" + cprCcy + "&tsyms=" + ccy){
        URLSession.shared.dataTask(with: url) {(data, response, error) in
            if let data = data {
                print ("connected to the url")
                if let json = try? JSONSerialization.jsonObject(with: data, options:[]) as? [String:Double]{
                    if let jsonDictionary = json {
                        if let price = jsonDictionary[ccy] {
                            print(price)
                        }
                    }
                }
            }
            else{
                print("wrong =(")
            }
        }.resume()
    }
}

1 个答案:

答案 0 :(得分:0)

最后,我找到了一个简单的解决方案:

替换了此部分:

if let jsonDictionary = json {
   if let price = jsonDictionary[ccy] {
      print(price)
   }
}

通过:

if let price = json[ccy] {
   print(price)
}

也就是说,只需消除导致我出现问题的那一行,然后将变量移至下一行。