我正在努力解决这段代码问题。我试图返回我从api链接获得的json数据。我读了几个其他的问题,但我没有找到让它工作。所有游乐场代码都在这里。提前谢谢!
import UIKit
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
struct WebsiteDescription: Decodable {
let ETH: Devise
}
struct Devise: Decodable {
let EUR : Double
}
func refreshPrices(DeLaDevise nom: String, completion: @escaping ((Double) -> Double)) -> Void {
guard let url = URL(string: "https://min-api.cryptocompare.com/data/pricemulti?fsyms=" + nom + "&tsyms=EUR") else { return }
URLSession.shared.dataTask(with: url) { (data, reponse, error) in
guard let data = data else { return }
var prix: Double = 0.0
print(data)
do {
let website = try JSONDecoder().decode(WebsiteDescription.self, from: data)
prix = website.ETH.EUR
completion(prix)
} catch let jsonErr {
print(jsonErr)
}
}.resume()
}
refreshPrices(DeLaDevise: "ETH") { prix in
print(prix)
}
答案 0 :(得分:1)
几乎。
似乎矛盾但是闭包确实不返回一些东西,它会传递一个参数。
错误消息为您提供了精确的线索:
无法转换类型'()'的值关闭结果类型' Double'
只需将返回值更改为Void
又名()
func refreshPrices(DeLaDevise nom: String, completion: @escaping (Double) -> ()) -> Void {