Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 此应用程序正在从后台线程swift2.0修改autolayout引擎_Xcode_Swift_Swift2 - Fatal编程技术网

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