我正在使用afnetworking从我的rest api抓取JSON数据。从JSON数据我创建UIViewControllers基于多少项在数组中。例如,如果我的JSON数据有3个项目,那么3个uiviewcontroller被创建并添加为我正在创建的滑块对象的子视图。
问题是由于数据从afnetworking完成加载分别从我的主线程,程序崩溃,因为没有数据要创建我的UIViewControllers。
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** - [__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'.
如何解决这个问题?我读到我可以使用[operation waitUntilFinished]来停止主线程的运行,直到所有的数据都被我的服务器加载,但人们建议不要这样做。
你肯定不想阻塞主线程。这是坏的;这会让你的应用看起来像是被冻结了。
听起来你想要一个"加载"屏幕。这样,您就可以在数据准备好时发布通知之类的操作。然后你的加载屏幕的视图控制器会观察到这个通知,然后在它进来的时候呈现剩下的数据。