0

典型的なレイヤード アーキテクチャでは、データ アクセス レイヤーで発生したエラーをどのように効果的に通信できますUIViewContollerか?

私は次のデザインを持っています:

UIViewControllers --> データコントローラー --> 特定のサービスプロキシ --> サービスプロキシベース

serviceproxybase は、Web サービスへの呼び出しを開始します。Web サービスで操作を呼び出す前にネットワークの可用性を確認し、ネットワークの障害が発生した場合にユーザーに警告したいと考えています。

ベスト プラクティス ソリューションは何ですか? ありがとう。

4

2 に答える 2

1

私の多くのココアタッチを使用したパターンに従ってください。nilエラーが発生した場合、多くのメソッドはorを返します。NOそのようなメソッドには、NSErrorエラーに関する詳細を含む out パラメータがあります。

必要に応じて、結果とエラーをレイヤーに伝播できます。または、レイヤーがよりレイヤー固有のエラーでエラーをラップし、新しいエラーを渡す場合があります。

このパターンに従うメソッドの例は次のとおりです。

NSFileManager copyItemAtPath:toPath:error:
NSFileManager attributesOfItemAtPath:error:
于 2013-04-22T15:06:37.633 に答える
0

を使用して、さまざまなエラー状態の NSNotificationCenterを送信および受信できます。NSNotification

serviceproxybase関心のあるオブザーバーに通知を投稿します。

[[NSNotificationCenter defaultCenter] postNotificationName:@"NoConnectionNotification" object:nil userInfo:someErrorInfoObject];

通常、オブジェクト、失敗したサービス リクエスト、またはサービスのエラー コードsomeErrorInfoObjectなど、いくつかの追加の詳細をオブザーバーに提供するオブジェクトをパッケージ化します。View Controller では、 orNSErrorでその通知をリッスンします。viewDidLoadviewWillAppear

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleNoConnectionError:)
                                             name:@"NoConnectionNotification"
                                           object:nil];

これで、名前の通知が投稿されるたびに、View Controller は対応するNoConnectionNotificationへのメッセージを受け取ります。handleNoConnectionError:NSNotification

于 2013-04-22T15:47:44.740 に答える