对于类似的问题,我已经阅读了堆栈溢出中的所有答案,并尝试了针对它们的建议,但无法解决此错误(条件绑定的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()
}
}
答案 0 :(得分:0)
最后,我找到了一个简单的解决方案:
替换了此部分:
if let jsonDictionary = json {
if let price = jsonDictionary[ccy] {
print(price)
}
}
通过:
if let price = json[ccy] {
print(price)
}
也就是说,只需消除导致我出现问题的那一行,然后将变量移至下一行。