1

ユーザーに情報を表示するために、私の iOS アプリはさまざまな Web サービスを呼び出す必要があります。これが、NSURLConnection を使用してサーバー関数を呼び出す Connection Helper クラスを作成した理由です。これは正常に機能し、エラー処理を除いて、残りのビューを簡素化します。

ほとんどの場合、ヘルパーで HTTP 500 エラーが発生した場合、ビューからの明示的な実装なしでアラートを表示したいと考えています。しかし、一部の HTTP 500 では、アラートの表示は無関係であり、ビューから別の動作が必要です。

今のところ、さまざまな状況を処理するために、接続ヘルパーに多くの if 句しかありません。このソリューションはきちんとしていないので好きではありません。私がやりたいことをアーカイブするために作成できるきちんとした構造のアイデアはありますか?

例: 不正な ID で Web サービス getItem を呼び出すと、HTTP 500 が返されます。ユーザーにエラーを表示するのは適切な動作です。しかし、不適切な ID で deleteItem を呼び出すと、HTTP 500 も返されますが、このエラーは無関係であるため、ユーザーに表示したくありません。

4

1 に答える 1

0

Shawnwall のソリューションは、おそらくこの問題を解決するための良い方法でした。しかし、私はより快適な別のものを見つけました。

私の接続ヘルパー クラスはデリゲート ConnectionHelperDelegate を宣言します。このクラスでは、オプションの関数を作成しました:

- (BOOL) connectionDidFailWithHttp500:(NSString *) errorMessage;

次に、デリゲートにこの関数がある場合は、次のように呼び出します。

if([self.delegationListener respondsToSelector:@selector(connectionDidFailWithHttp500:)]){...}

デリゲートが true を返す場合、それは残りの作業を処理することを意味します。false が返された場合は、ConnectionHelper にそれを実行するように指示します。

于 2013-01-21T14:48:56.220 に答える