私は2つの基本的な方法 - viewDidLoad
とviewDidAppear
を持っています。私のApp哲学によると、View Controllerが読み込まれると、ベースからデータがフェッチされ、いくつかの述語でソートされます。フェッチプロセスが長いので、グローバルキューにディスパッチしました。私のビューが表示されたら、明らかに配列(loadメソッドでコンパイルされる)から値を取得せず、クラッシュします。少なくとも1つのオブジェクトが配列に追加されるまで待機するには、viewDidAppear
が必要です。 セマフォーまたは一時的な値の種類? ありがとうございます!単純な非同期スレッドからの値を待つ
P.S.配列内の各項目は、UIを構成するデータでstructを表します。ユーザーはこのUIとやり取りするので、配列の最初の項目で一度読み込む必要があります。次の項目に切り替えるには、ユーザーが「次へ」をクリックし、配列の次の項目に従ってUIが変わります。そのため、データをバックグラウンドで取得し、ユーザーがすぐに作業できるようにしたいのです。 (それはすぐに5日、10日または1001番目の要素にジャンプすることは不可能だ、ユーザーがこれらのページ番号になる前にデータをフェッチするための十分な時間があるでしょう)まだ右の決定:(
は聞かないで、知らせる非同期完了ブロックを使用して、データアレイを設定/終了ブロックのテーブルビューをリロード – vadian
@vadianが、残念ながらそれが「フリーズ」しますとのインタフェース。長い "進行状況バー"の読み込み –
あなたのUIはフェッチされたデータに依存するべきではありません。インターネットc接続は利用できません。その場合でもあなたのUIは反応します。実際のデータが利用可能になるまで、プレースホルダまたは空のデータを表示します。 – user3441734