gpt4 book ai didi

swift - 闭包代码不会在函数中执行

转载 作者:行者123 更新时间:2023-11-28 13:17:53 25 4
gpt4 key购买 nike

我有一个闭包,将 http 调用包装在一个函数中,该函数通过单击按钮调用。然而,当我调试时,我可以看到闭包内的代码从未执行,程序在到达闭包时完全跳出函数。

func getTheForeCast(city: String) {
println("Function getForecast city passed = : \(city)")

var webAddress: String = "http://www.weather-forecast.com/locations/\(city)/forecasts/latest"

println("Web address url : \(webAddress)")

let url = NSURL(string: webAddress)
println(url!)

// PROGRAM EXITS FUNCTION HERE

let openbrowserSession = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in
// in the following code, session returns data, error, and response
println("In closure")

if error == nil {
// no errors, convert html to readable data
var urlConverted = NSString(data: data, encoding: NSUTF8StringEncoding)

println(urlConverted)

// run this asynchronously using a grand central dispatch
dispatch_async(dispatch_get_main_queue()) { self.webview_displayWeather.loadHTMLString(urlConverted, baseURL: nil) } // dispatch

} else if error != nil {
println("Error loading page")
println(error.description)
}
} // closure
} // func

感谢任何意见。

最佳答案

NSURLSession 创建的任务最初处于“暂停”状态。您必须在创建任务后调用 resume():

let openbrowserSession = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in

// ...

}
openbrowserSession.resume()

否则什么也不会发生。

关于swift - 闭包代码不会在函数中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28251802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com