1

そこで私は、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 で渡されたセレクターが呼び出され、データが返されます。

それで、私はここで完全に間違った方向に向かっていますか?たぶん大丈夫な方法のようです。

この種のデータ層の設計に関する指針や記事はどれも素晴らしいものです。

ありがとう!ボブ

4

1 に答える 1

2

コールバックが必要で、ハンドラー メソッドの呼び出し元で分岐したくない場合は、ターゲット (ここでは VC) とセレクター (ハンドラー メソッド) を渡すのが一般的です。これは、ターゲットセレクターパターンと呼ばれます。

それとは別に、これの可能な設計について、 RestfulCoreDataおよびCoreResourceフレームワークをチェックアウトすることをお勧めします。

また、有名なObjectiveResourceフレームワークも良い洞察を提供してくれるかもしれません。

于 2010-06-20T01:51:47.263 に答える