В моем приложении iOS я пытаюсь извлечь данные с сервера. Я хочу сделать это асинхронно. Я пытаюсь это:Как получить данные асинхронно с сервера в iOS и обновить интерфейс после получения данных?
- (void)loadData {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
/** code for fetching data. **/
dispatch_async(dispatch_get_main_queue(), ^{
myList = [NSMutableArray arrayWithObjects:fetchedData, nil];
});
});
}
Выше метод LoadData() вызывается из метода Init() из tableViewController.
Я использую данные из объектов в этом списке, которые будут отображаться как ячейки. Но прежде чем я получу данные с сервера, основной поток пытается заполнить пользовательский интерфейс из списка (который, очевидно, будет пустым). Как их синхронизировать?
Я обнаружил, что:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
выше функции (которая возвращает счетчик MyList) возвращает 0, и, следовательно, мой стол отображается как пустой. Эта функция вызывается до того, как я получу данные с сервера (так как это занимает больше времени, в то время как этот метод немедленно передает управление в основной поток).
дайте мне знать, что ваш вопрос закончился – Spynet