Как вытащить JSON из подсети для предоставления данных для объекта без его сбоя

Я использую afnetworking, чтобы получить данные JSON из моего остальных API. Из этих данных JSON я создаю UIViewControllers на основе количества элементов в массиве. Например, если мои данные JSON содержат 3 элемента, то создаются 3 UIViewControllers и добавляются в качестве дочерних представлений для объекта слайдера, который я создаю.

Проблема в том, что данные из подсети завершают загрузку отдельно от моего основного потока, программа вылетает из-за отсутствия данных, создающих мои UIViewControllers.

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -   [__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'.

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

1 ответ

Решение

Вы определенно не хотите блокировать основной поток. Это плохо; это выглядит так, будто ваше приложение заморожено.

Похоже, вы хотите иметь "загрузочный" экран. Таким образом, вы можете сделать что-то вроде публикации уведомления, когда ваши данные будут готовы. Контроллер представления вашего экрана загрузки будет наблюдать за этим уведомлением, а затем представлять остальные данные, когда они поступят.

Другие вопросы по тегам