我正在尝试构建一个加密货币应用程序,通过API告诉您Cardano的价格。在' If Statement'在它下面直接去'否则'但是,如果我改变了“.double' to' .string'它工作正常。我无法弄清楚原因。我使用的是SwiftyJSON,Alamofire,Swift4和Xcode 9
以下是API: https://api.cryptonator.com/api/ticker/ada-aud它应该带回价格,例如0.47756685
func updateCardanoData(json : JSON) {
if let cardanoResult = json["ticker","price"].double {
cardanoPriceLabel.text = currencySelected + "\(cardanoResult)"
} else {
cardanoPriceLabel.text = "price unavailable"
}
}
谢谢。
答案 0 :(得分:1)
这是因为您的API实际上并不返回double,而是返回字符串。
"price":"0.48121602" - this is a string, notice the double quotes
解决方案是将收到的字符串转换为Double,如下所示:
if let cardanoResult = json["ticker","price"].string, let doubleResult = Double(cardanoResult) {
//do stuff with doubleResult
}
答案 1 :(得分:0)
因为我不知道JSON的结构,我只能说,如何打印错误。我不知道,如果这对你有帮助的话。作为SwiftyJSON状态的文档,您可以使用error
来获取错误,例如:
if let cardanoResult = json["ticker","price"].double {
//do something with the Double value
} else {
print(json["ticker","price"].error)
}
我希望,这对您有所帮助,否则,请向我们展示JSON的结构。