我是Swift中的新成員。使用NSURLSession
從服務器下載JSON數據後,我無法立即調用該函數。這裏是我的代碼 -Swift 2在CompletionHandler中調用函數
func loadTableViewWithServerData(_url:String){
showOverLayView()
let postEndpoint: String = _url
let session = NSURLSession.sharedSession()
let url = NSURL(string: postEndpoint)!
session.dataTaskWithURL(url, completionHandler: {
(data, response, error) in
guard let responseData = data else {
print("Error: did not receive data")
return
}
let post: NSMutableArray
do {
post = try NSJSONSerialization.JSONObjectWithData(responseData,
options: []) as! NSMutableArray
self.dataArray = SHDataAccess().arrayFromPlist(post)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.questionTableView.reloadData()
//hideOverLayView() /* it shows error here*/
})
} catch {
print("error trying to convert data to JSON")
}
}).resume()
}
當我嘗試調用hideOverLayView() /* it shows error here*/
它顯示了錯誤:
Error : Call to method 'hideOverLayView()' in closure requires explicit 'self' to make capture semantics explicit.
我該如何解決這個問題?或者當服務器數據可用時,我正在刷新視圖的另一個函數的調用方式是正確的。
這裏是我的hideOverLayView() /* it shows error here*/
功能 -
func hideOverLayView(){
self.overLayView.imageProgress.stopAnimating()
UIView.animateWithDuration(0.5, animations: {
self.overLayView.hidden = true
})
}
'hideOverLayView'函數是否存在於你的類中?你可以調用'self.hideOverLayView()'? – JAL
是的。在那。 – Shohrab
那麼'self.hideOverLayView()'工作嗎?什麼是你得到的完整錯誤? – JAL