Xcode 此应用程序正在从后台线程swift2.0修改autolayout引擎
我使用这个简单的代码从网站中提取一些纯文本Xcode 此应用程序正在从后台线程swift2.0修改autolayout引擎,xcode,swift,swift2,Xcode,Swift,Swift2,我使用这个简单的代码从网站中提取一些纯文本 @IBAction func askWeather(sender: AnyObject) { let url = NSURL(string: "http://www.weather-forecast.com/locations/" + userField.text! + "/forecasts/latest")! let task = NSURLSession.sharedSession().dataTaskWithURL(url
@IBAction func askWeather(sender: AnyObject) {
let url = NSURL(string: "http://www.weather-forecast.com/locations/" + userField.text! + "/forecasts/latest")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) -> Void in
if let urlContent = data{
let webContent = NSString(data: urlContent, encoding: NSUTF8StringEncoding)
let wArray = webContent?.componentsSeparatedByString("Day Weather Forecast Summary:</b><span class=\"read-more-small\"><span class=\"read-more-content\"> <span class=\"phrase\">")
let wCont = wArray![1].componentsSeparatedByString("</span>")
self.weatherResult.text = wCont[0]
}
else{
print("Sorry could not get weather information")
}
}
task.resume()
}
@IBOutlet var weatherResult: UILabel!
@IBOutlet var userField: UITextField!
我试着读了一些关于其他有这个问题的人的帖子,但是他们使用异步等线程来运行他们的代码。我不确定我的情况有什么问题
谢谢大家! 我猜,
self.weatherResult.text=wCont[0]
正在修改类似于UILabel
或类似的东西,在这种情况下,您试图从后台线程更改用户界面的一部分,这是一个很大的禁忌
请尝试这样的代码:
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
self.weatherResult.text = wCont[0]
}
我猜,
self.weatherResult.text=wCont[0]
正在修改类似于UILabel
或类似的东西,在这种情况下,您试图从后台线程更改用户界面的一部分,这是一个很大的禁忌
请尝试这样的代码:
dispatch_async(dispatch_get_main_queue()) { [unowned self] in
self.weatherResult.text = wCont[0]
}
这是你的异步线程。就在那里。dataTaskWithURL在后台运行,最终将调用传入的回调函数。这是在后台完成的
这是你的异步线程。就在那里。dataTaskWithURL在后台运行,最终将调用传入的回调函数。这是在后台完成的 更新调度队列dispatch_async(dispatch_get_main_queue(),{//UI-related code here})下的UI相关内容更新调度队列dispatch_async(dispatch_get_main_queue(),{//UI-related code here})下的UI相关内容乐于助人–总是有新东西需要学习:)乐于助人–总是有新东西需要学习:)感谢您澄清,您在将要在后台运行的代码上是否可以看到任何specefic“符号”?感谢您澄清,是否有任何specefic“符号”您可以在将在后台运行的代码上看到?
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) -> Void in