私はこの問題を抱えています:コントローラーはビューにデータを入力するためにそのデータを必要とするため、モデルにデータをロードするように要求します。モデルはデータ ストアにデータを要求し、データ ストアは再びデータベースにクエリを実行します。My Model は、結果を処理するロジックを含むブロックを送信します。
その後、問題が発生します。このデータをコントローラーに返す方法は? 非同期であるため、いつ完了するかわからないため、ブロック内またはブロック外にリターンを配置することはできません。
これを修正する2つの方法について考えました。
- Controller にモデルへのコールバックとしてブロックを渡すようにします。これにより、独自のコールバック ブロックでそのコールバックが再度呼び出されます。
- コントローラーがリッスンできる通知をモデルに投稿させます。
誰かがこれに対する良い解決策を持っていますか?
EDIT:リストの#1を明確にするために(コードはありません):私のコントローラーは、saveStuff:callback:
モデルで呼び出し、stuff
コールバックブロックを渡します。次に、モデルはデータ ストアに保存を要求しstuff
、独自のコールバックをデータ ストアに渡します。次に行うことは、Models コールバック内で Controllers コールバックを呼び出すことです。それはもっと意味がありますか?