0

私は afnetworking を使用して、残りの API から JSON データを取得しています。その JSON データから、配列内の項目数に基づいて UIViewControllers を作成します。たとえば、JSON データに 3 つの項目がある場合、3 つの UIViewControllers が作成され、作成中のスライダー オブジェクトの子ビューとして追加されます。

問題は、afnetworking からのデータがメイン スレッドとは別にロードを完了するため、UIViewControllers を作成するデータがないため、プログラムがクラッシュすることです。

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

この問題に対処するにはどうすればよいですか? [operation waitUntilFinished] を使用して、すべてのデータがサーバーによってロードされるまでメイン スレッドの実行を停止できることを読みましたが、人々はこれを推奨しませんでした。

4

1 に答える 1

2

メインスレッドをブロックしたくないことは間違いありません。良くないね; アプリがフリーズしているように見えます。

「ロード」画面が必要なようです。このようにして、データの準備ができたときに通知を投稿するなどのことができます。ロード画面のビュー コントローラーはその通知を監視し、受信したときに残りのデータを表示します。

于 2013-03-28T07:22:52.120 に答える