そこで私は、iPhone ランドで自分のモデルのデータを取得するためのクリーンな方法を設計しようと試みてきました。アプリケーションのすべてのデータは、JSON API から取得されます。
そのため、現在、VC がいくつかのモデルを必要とする場合、VC は JSON 呼び出し自体 (非同期) を実行し、データを受信するとモデルを構築します。それはうまくいきますが、DAOが情報を取得してモデルを返す、すべて非同期の方法で、よりクリーンな方法を考えようとしています。
私の最初の考えは、VC が DAO をインスタンス化し、それ自体をデリゲートにするように、DAO のプロトコルを構築することでした。データ [DAOinstance getAllUsers] を要求すると、DAO はすべてのネットワーク要求を実行し、データを取得すると、デリゲート (VC) のメソッドを呼び出してデータを渡します。
これは素晴らしい解決策だと思いますが、同じ VC で異なる目的のために同じ DAO を使用する必要がある場合、どの DAO インスタンスが要求を開始したかに応じてデリゲート メソッドのロジックを分岐する必要があることに気付きました。
したがって、私の 2 番目の考えは、「ハンドラー」セレクターを典型的な JavaScript パターンの DAO オブジェクトに渡すことができるようにすることでした。したがって、公式のプロトコルの代わりに、 [DAOinstance getAllUsersWithSelector:"TheHandlerFunctionOnMyVC:"] のように言うと、DAO がネットワーク アクティビティを完了すると、VC で渡されたセレクターが呼び出され、データが返されます。
それで、私はここで完全に間違った方向に向かっていますか?たぶん大丈夫な方法のようです。
この種のデータ層の設計に関する指針や記事はどれも素晴らしいものです。
ありがとう!ボブ