2015-02-23 2 views
3

Я новичок в программировании на iOS и пытаюсь создать свое первое приложение. Я извлечение некоторые данные с сервера, используяКак проверить, завершено ли dataTaskWithRequest?

Я понимаю, что весь код в закрытии completionHandler выполняется, когда задача выполнена. Из моего ViewController я хочу проверить, завершена ли эта задача, а не загружать таблицу до ее появления. Как проверить, завершена ли эта задача?

Я думаю, у меня могло бы быть hasHandler установить некоторую глобальную логическую переменную в true при ее запуске, и я мог бы проверить эту переменную в моем ViewController, но я чувствую, что есть лучший способ сделать это со встроенной функциональностью, я просто не знаю.

ответ

2

Контроллер вида не должен знать, когда вызывается completionHandler. Все, что вы делаете, это то, что у вас есть completionHandler на самом деле отправьте tableView.reload() обратно в главную очередь (что затем вызывает вызов методов UITableViewDataSource). Это completionHandler, который инициирует обновление пользовательского интерфейса, а не наоборот:

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in 
    // check for errors and parse the `data` here 

    // when done 
    dispatch_async(dispatch_get_main_queue()) { 
     self.tableView.reload() // this results in all of the `UITableViewDataSource` methods to be called 
    } 
} 
task.resume() 
+0

AH! это имеет большой смысл. Благодаря! –

Смежные вопросы