2014-10-10 76 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)" 

      } 
相關問題