Чтобы полностью отобразить мой просмотр с моего контроллера просмотра, мне нужно получить ответ от сетевого запроса.Просмотр Зависит от сетевого запроса
Я пытался сделать это по-разному, но каждый раз безуспешно.
Первоначально, я получил его для работы, выполнив «синхронный» сетевой запрос до вызова любых методов визуализации представления. Тем не менее, компилятор предупреждает меня, что синхронные запросы сети устарели с ios 8.
Каков наилучший способ выполнить это наиболее эффективным образом?
Я попытался:
override func loadView() {
dispatch_sync(dispatch_get_main_queue()){
// GET the Markup
let url = NSURL(string: self.PageURL)
let request = NSURLRequest(URL: url!)
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
let RequiredViewData = session.dataTaskWithRequest(request) {(data, response, error) in
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .AllowFragments)
self.RequiredViewJSON = json
self.view = UIView(frame: UIScreen.mainScreen().bounds)
print(data)
} catch {
print("error serializing JSON: \(error)")
}
}
RequiredViewData.resume()
}
}
Но это только делает мое приложение визуализации, как пустой экран.
По существу, мне необходимо выполнить следующие действия: Сделать сетевой запрос и получить ответ до того, как может возникнуть какой-либо рендеринг.
Спасибо заранее!
Есть ли способ, которым я не мог выполнить сетевой запрос в основном потоке? – luckybroman5
На самом деле, я думаю, вы все равно делаете это на фоновом потоке. Я думаю, что NSURLSession по умолчанию асинхронный, и даже если вы его завернули в «dispatch_get_main_queue», обратный вызов все еще происходит в фоновом потоке, который вызывает проблемы с пользовательским интерфейсом, потому что это вещество должно произойти в основном потоке. Я уточню свой ответ на то, что, как я считаю, вы хотите. Однако я бы настоятельно рекомендовал не переопределять loadView. –