我試圖連接我的HTTP服務器獲取JSON格式的數據。它連接並正確獲取數據。我能夠在task.resume()
之前打印數據,但它不會在task.resume()
之後打印此外,該函數還會返回空對象。NSURLSession正確獲取數據,但Task.resume後沒有返回值()
我想它保存到一個全局變量task.resume()
之前。所以,我可以使用getter方法獲取數據,但仍然返回空白。
能否請你告訴我,我在做什麼錯在這裏。在此先感謝
func getTicketInfo(rDate: String, rName: String) -> NSDictionary {
var obj = NSDictionary()
let request = NSMutableURLRequest(URL: NSURL(string: self.host)!)
request.HTTPMethod = "POST"
let postString = "&DriverName=\(self.username);&Password=\(self.password);&Function=getTicketPrintInvoiceInfo;&routeName=\(rName);&routeDate=\(rDate);";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)", terminator: "")
return
}
var parseError: NSError?
let parsedObject: AnyObject?
do {
parsedObject = try NSJSONSerialization.JSONObjectWithData(data!,
options: NSJSONReadingOptions.AllowFragments)
} catch let error as NSError {
parseError = error
parsedObject = nil
} catch {
fatalError()
}
obj = (parsedObject as? NSDictionary)!
//prints the object fine
print(obj)
}
task.resume()
//prints empty result
print(obj)
return obj;
}
你不能等待異步方法返回結果,否則這將是一個同步的方法。添加完成處理程序以更新您的UI –
print(obj)在task.resume()後立即調用。它不會等待它完成。如果你有//打印對象,那麼你需要處理結果。 –
這個函數不是用來更新UI的,但我想我需要讓它在task.resume()之前更新我需要用數據更新的類。所以,因爲它會返回空,所以這個類沒有一個返回類型的權利,對吧? – pininfarina