Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
从Completion处理程序调用时,XCode 6 UILabel未刷新文本_Xcode_View_Swift_Uilabel_Refresh - Fatal编程技术网

从Completion处理程序调用时,XCode 6 UILabel未刷新文本

从Completion处理程序调用时,XCode 6 UILabel未刷新文本,xcode,view,swift,uilabel,refresh,Xcode,View,Swift,Uilabel,Refresh,我在函数完成后调用刷新标签。当查看日志以查看label.text的情况时,我可以看到它已被替换,但视图看起来仍然相同 我正在从viewDidload调用refreshQuote()。 直接从viewDidLoad调用setQuoteLabel时,一切正常 请帮忙,现在失去希望了。 提前谢谢 func refreshQuote() { var url : String = "https://api.parse.com/1/classes/Quotes" var request :

我在函数完成后调用刷新标签。当查看日志以查看label.text的情况时,我可以看到它已被替换,但视图看起来仍然相同

我正在从
viewDidload
调用
refreshQuote()
。 直接从viewDidLoad调用
setQuoteLabel
时,一切正常

请帮忙,现在失去希望了。 提前谢谢

func refreshQuote()
{

    var url : String = "https://api.parse.com/1/classes/Quotes"
    var request : NSMutableURLRequest = NSMutableURLRequest()

    request.addValue("------", forHTTPHeaderField: "X-Parse-Application-Id")
    request.addValue("------strong text", forHTTPHeaderField: "X-Parse-REST-API-Key")


    request.URL = NSURL(string: url)

    request.HTTPMethod = "GET"

    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
        var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil

          NSLog(error.debugDescription);

        let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary

        if (jsonResult != nil)
        {
            var allResults: NSArray = jsonResult["results"] as NSArray
            var pickedResult: NSDictionary = allResults[0] as NSDictionary

            let q:String = pickedResult["message"] as String!

            self.setQuoteLabel(q);

        } else
        {

            // couldn't load JSON, look at error
        }
    })


}



func setQuoteLabel (quote:String)
{
    NSLog(quote)
    quoteLabel.text = quote;
    quoteLabel.setNeedsDisplay();
    NSLog(quoteLabel.text!)

}
func refreshQuote()
{
变量url:字符串=”https://api.parse.com/1/classes/Quotes"
var请求:NSMutableURLRequest=NSMutableURLRequest()
request.addValue(“----”,用于HttpHeaderField:“X-Parse-Application-Id”)
request.addValue(“----强文本”,用于httpheaderfield:“X-Parse-REST-API-Key”)
request.URL=NSURL(字符串:URL)
request.HTTPMethod=“GET”
NSURLConnection.sendAsynchronousRequest(请求,队列:NSOperationQueue(),completionHandler:{(响应:NSURLResponse!,数据:NSData!,错误:NSError!)->中无效
var错误:AutoreleasingUnsafeMutablePointer=nil
NSLog(错误。调试说明);
将jsonResult:NSDictionary!=NSJSONSerialization.JSONObjectWithData(数据,选项:NSJSONReadingOptions.MutableContainers,错误:error)设为?NSDictionary
if(jsonResult!=nil)
{
var allResults:NSArray=jsonResult[“结果”]作为NSArray
var pickedResult:NSDictionary=allResults[0]作为NSDictionary
让q:String=pickedResult[“message”]作为字符串!
self.setQuoteLabel(q);
}否则
{
//无法加载JSON,请查看错误
}
})
}
func setQuoteLabel(引号:字符串)
{
NSLog(报价)
quoteLabel.text=quote;
quoteLabel.setNeedsDisplay();
NSLog(quoteLabel.text!)
}

所有UI组件都必须从主线程更新,而在您的情况下,很可能是从不同的线程更新,因为代码位于异步块中

要强制在主线程中执行代码块,可以使用
dispatch\u async
,如下所示:

dispatch_async (dispatch_get_main_queue ()) {
    self.setQuoteLabel(q)
}

所有UI组件都必须从主线程更新,而在您的情况下,很可能是从不同的线程更新,因为代码位于异步块中

要强制在主线程中执行代码块,可以使用
dispatch\u async
,如下所示:

dispatch_async (dispatch_get_main_queue ()) {
    self.setQuoteLabel(q)
}

对于Swift 3,它应该是DispatchQueue.main.async(){self.setQuoteLabel(q);}对于Swift 3,它应该是DispatchQueue.main.async(){self.setQuoteLabel(q);}