Swift 从方法内部获取变量
我是swift的新手,正在学习从API发出HTTP请求 现在我有了这个结构Swift 从方法内部获取变量,swift,api,Swift,Api,我是swift的新手,正在学习从API发出HTTP请求 现在我有了这个结构 struct CNJokesProvider { let url = URL(string: "https://api.chucknorris.io/jokes/random")! func getRandomJoke() -> String { var request = URLRequest(url: url) request.httpMethod = "G
struct CNJokesProvider {
let url = URL(string: "https://api.chucknorris.io/jokes/random")!
func getRandomJoke() -> String {
var request = URLRequest(url: url)
request.httpMethod = "GET"
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: { data, response, error -> Void in
do {
let json = try JSONDecoder().decode(CNJokesResponse.self, from: data!)
} catch {
print("\(error)")
}
})
task.resume()
//return json.value
}
}
您可以看到json常量的声明。
我需要从常量中获取数据,然后从这个getRandom笑话函数返回它。
我试图使它成为一个struct属性,但我无法使它工作。您在
任务中声明json属性,因此这意味着您无法在那里的do catch
语句之外访问它 这不是真正的原因。真正的原因是URLSession.dataTask
是异步的。