我向後端服務器發送請求,我需要知道正確的方式來通知我的主線程響應。我正在使用NSNotificationCenter執行此任務,但這有時不起作用,並且在工作時有一些延遲,因爲當我正在調試時,我可以看到控制檯何時打印結果,但幾秒後才能看到相應的警報。當後臺請求快速完成時通知我
這裏是我的要求:
let request1 = NSMutableURLRequest(URL: NSURL(string: serverID)!)
request1.HTTPMethod = "GET"
for key in parameters.keys{
request1.addValue(parameters[key] as String!, forHTTPHeaderField: key)
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request1) {
data, response1, error in
if error != nil {
print("error=\(error)")
NSNotificationCenter.defaultCenter().postNotificationName("request1Error", object: self)
return
}
else {
let httpResponse = response1 as! NSHTTPURLResponse
let headers = httpResponse.allHeaderFields as NSDictionary
let sucess: AnyObject? = headers.objectForKey("UserId")
if (sucess != nil){
let value = headers.valueForKey("info") as! String
print("info: \(value)")
NSNotificationCenter.defaultCenter().postNotificationName("sucessRequest", object: self)
}
else{
NSNotificationCenter.defaultCenter().postNotificationName("requestError2", object: self)
}
}
}
task.resume()
我應該如何通知我的主線程的請求的結果?
呼叫調度異步和跨上主線程。有什麼問題? – matt
我應該如何調用異步調度並進入主線程?問題是postNotification有時會失敗,並且延遲運行觀察者。 – DrCachetes
延遲是因爲你沒有做我剛纔所說的。 – matt