У меня есть следующий метод под названием ViewDidLoad(). Я понимаю, что session.dataTaskWithRequest автоматически запускается в фоновом потоке. И из-за этого код, следующий этому методу в ViewDidLoad(), не дождался завершения этого процесса и начала его выполнения.Функция завершена до NSURLSession - dataTaskWithRequest завершено
Есть ли способ гарантировать, что фоновый поток будет выполнен до того, как будут выполнены другие методы?
func getCoordinatesFromServer() {
let request = NSMutableURLRequest(URL: NSURL(string: constants.urlName.loadData)!)
request.HTTPMethod = "POST"
request.addValue("multipart/form-data", forHTTPHeaderField: "Accept")
request.setValue("keep-Alive", forHTTPHeaderField: "Connection")
request.HTTPBody = (constants.requestTag.getCoordinates).data
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response ,error) in
if let response = response {
let httpResponse = response as! NSHTTPURLResponse
print("response code = \(httpResponse.statusCode)")
if (httpResponse.statusCode == 200) {
dispatch_async(dispatch_get_main_queue(), {
let decodedData = NSData(base64EncodedData: data!, options: NSDataBase64DecodingOptions([]))
let jsonText = NSString(data: decodedData!, encoding: NSASCIIStringEncoding) as! String
do {
let json = try NSJSONSerialization.JSONObjectWithData(jsonText.data, options: NSJSONReadingOptions.init(rawValue: 0))
self.parseJsonData(json["Datalist"] as! NSArray)
} catch {
print("Error:\n \(error)")
}
})
}
}
})
task.resume()
}
С уважением,
Название ссылки для NSURLConnection, но это та же самая техника, в которой вы нуждаетесь. – Moritz