2015-07-21 57 views
0

我在開始的時候字符串零裏面NSURLSession

var testString: String? 


let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in 

    let xml = SWXMLHash.parse(data) 

    testString = xml["root"]["schedule"]["date"].element?.text 

} 

但NSURLSession外部聲明一個字符串,testString是零。我怎樣才能使它不會成爲零,我實際上可以使用它的價值?

例如,我想使用

println (testString) 

方法塊之後。但它是零

回答

1

你的變量爲零的原因是因爲閉包是異步執行的。這意味着網絡請求後的其餘代碼將繼續被正常調用,但只有在網絡請求完成時纔會調用包含參數數據,響應和錯誤的代碼。

要解決此問題,請嘗試將封閉內的變量進行任何嘗試,以使您的println(testString)位於大括號內。

+0

太棒了!這回答了我的問題。然而,實際上我想要做的是設置一個標籤等於testString中的內容。我試圖在封閉內部做這件事,但沒有出現在我的標籤中。任何想法呢? – jipot

+2

請記住,UI更新必須發生在主線程:dispatch_async(dispatch_get_main_queue()){[weak self] in self?.label.text = testString} – Coxy1989

+0

@XamarinWarrior確保在您的網絡請求後放置此代碼 - 它只是開始吧。代碼:'task.resume()' – brimstone