0

REST モデルを使用して Django バックエンドと非同期に通信する iOS アプリに使用するより良い設計パターンがあるかどうかについて、意見を求めています。

サーバーは現在、リクエストに対して 3 種類の応答を返すことができます。

  • JSON オブジェクト
  • サーバーステータスコード整数
  • 長い Django エラー メッセージ

サーバーからのデータを必要とするアクションが iOS アプリで実行される場合、私の設計パターンは次のようになります。

  • オブザーバーが通知センターに追加され、サーバーの応答を処理できるメソッドが指定されます
  • メソッドはまとめて NSURLConnection を送信します
  • NSURLConnection デリゲート メソッドは応答を受信し、解釈を行ってサーバー応答の種類を確認し、適切な通知を通知センターに投稿します。
  • これにより、応答メソッドが実行され、応答が処理されます

このパターンに関する私の問題は、個々の要求と応答の種類を送受信するために記述されたメソッドが多数あることです。たとえば、アイテム リストを要求している場合、通知センターに複数のオブザーバーを追加する必要があります。1 つはユーザー リストを処理し、もう 1 つは空のユーザー リストを処理し、もう 1 つはエラーを処理します。次に、サーバーが送信する応答の種類に基づいて、適切なアクションを実行し、オブザーバーを削除するために、これら 3 つのそれぞれに対してカスタム メソッドを記述する必要があります。

さらに、NSURLConnection デリゲートは、受信した応答の種類 (受信したリスト内のアイテムの種類) を解釈しようとしているために、要求されたもののコンテキストがあまりないため、かなり複雑になります。サーバー メッセージが戻ってきたときに、間違った応答メソッドを呼び出さないでください。

私は iOS プログラミングと REST プログラミングの両方にかなり慣れていないため、明らかな何かが欠けている可能性があります。アドバイスやリソースへのリンクは大歓迎です。

4

2 に答える 2

2

最初は、RestKit を使用してネットワーク通信からコードを抽象化し、データ モデルと高レベルの要求についてもっと心配できるようにすることを検討します。第二に、これには通知を使用しません。これは、混乱する可能性が高く、複数の同時リクエストを管理するのが非常に難しいためです。これには、委任またはブロック コールバックの方がはるかに優れています。

于 2013-09-14T16:22:57.160 に答える