2014-10-10 88 views
0

我试图用Swift对var url : String = "http://ip.jsontest.com/"进行测试REST调用。我想要做的是在UITextView中显示结果(基本上只是打印JSON)。从Swift中的Closure中获取数据

现在我想用这个片段为实现这一目标:

 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in 
// code 

但是,我不知道如何走出封闭的数据进入我的UITextView。打印到控制台是没有问题的,但是将数据写入var并将其返回给我的TextView不起作用。

回答

0

完成像下面的关闭......

编辑:

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) in 
if(data != nil){ 
    //Display the json using your textview object 
    //self.textView.text = .... data (convert the data as you wanted.) 
    let responseData : NSString = NSString(data: data, encoding: NSUTF8StringEncoding) 
    self.textView.text = reponseData 


} 
}) 
+0

“型NSException的未捕获的异常终止” ,只要我尝试在该Closure中设置textView.text。奇怪的是,因为我可以轻松println(数据),但设置self.textView.text =“\(数据)”引发异常。 – 2014-10-10 12:00:00

+0

将响应从NSData转换为NSString,然后尝试。正如我更新上面的答案。 – Suresh 2014-10-10 12:25:55

+0

你也应该确保设置UITextView.text是通过将其包装在'dispatch_async(dispatch_get_main_queue()){...} – 2014-10-10 18:13:30

0

基本上我可以得到的数据出来是这样的:

dispatch_async(dispatch_get_main_queue()) 
       { 
        self.resultView.text = "\(data)" 

      }