iOS開発のWebサービスからデータを取得するためにHTTPリクエストを作成するメソッドをどこに配置すればよいですか?


9

私のiOSアプリケーションにModel Carがあり、名前、年、値などのパラメーターがWebサービスからフェッチされ、リストに自動車のデータが入力されます。

非同期でサーバーに行き、車の配列を返すメソッドをどこに置くべきですか(このメソッドはすでにJSONをCar配列に変換しています)?

私の現在のアプローチは、HttpClientを受信して​​(クライアントをモックするユニットテストを実行できるように)Carクラスの静的メソッドであり、車のNSArrayを返しますが、これは良いですか?

この状況で皆さんは何をしましたか?

私は最近、クラスは1つのことだけを行うべきであるというクリーンなコードを読み始めたので心配です。現在の方法では、2つのことを行うように見えます(Carに関する情報を保持し、Carのリストを取得します)。

回答:


4

Carsのリクエストを処理し、次のようなメソッドを公開するCarBrokerオブジェクトをお勧めします。

  1. getCars-すべての車のリストを取得します。
  2. getCarByID-特定の車用。

さらに、このようなオブジェクトは、他の自動車ブローカーからの要求を処理できます(必要な場合)。どちらの方法でも、Carオブジェクトとオブジェクトブローカーの責任を持つCarオブジェクトではなく、1つの実際の責任領域(Brokering Cars)があります。


これで、再利用できるクリーンなCarオブジェクトが完成しました。データを取得するために別のアクセスプロトコルを使い始めたらどうなるでしょうか。そのシナリオでは、どこかに開始点があり、片側のすべてのprocessing \ rules \ logicコードがCarオブジェクトを受け入れることがわかっています。その後、RESTなどを使用してCarBrokerの再実装を開始できますが、すでに途中であり、本質的にCar抽象化にのみ関連するロジックを再プログラムおよび再テストする必要はありません。
Andyz Smith 2013

1

ここで、別のオブジェクトを保持することは、親が常に応答を処理するために生きていることを保証できないどこかに保持する必要があります。

これらの実装をシングルトンクラスに保持することをお勧めします。このクラスを保持することは、非常に頻繁に呼び出すことができるいくつかのジェネリックメソッドの実装にも役立ちます。


-1

配列がWebから戻ったときにViewDidLoadメソッド内で非同期メソッドを呼び出してビューを更新できます。配列をデータベースに保存できるため、ViewcontrollerをロードするたびにWebからデータをロードする必要はありません。


3
これは尋ねられた質問にどのように答えますか?
gnat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.