1

私のプロジェクトには次のクラスがあります。

  • トラック
  • 自転車
  • 飛行機

ユーザーは、各クラスを入力で初期化します。たとえば、車の場合、モデル、メーカーなどで初期化します。

キー値の検証を使用して各モデルのすべてのプロパティを検証する検証関数があります。

次に、検証関数ごとに、その関数の NSError 入力パラメーターを設定します。

問題は、20 を超えるエラーの説明に一致する 20 を超えるエラー コードがあることです。たとえば、ユーザーが有効な車種を入力しなかった場合、「有効な車種を入力してください」というエラーの説明とともにエラー コード 1000 が返されます。現在、これらすべてのモデルの親クラスの関数内で長い switch ステートメントを使用して、各エラー コードをエラーの説明と照合し、各サブクラスの検証関数に適切な nserror オブジェクトを作成しています。20 を超えるエラー コードからエラーの説明へのマッピングを処理する、より適切で管理しやすい方法はありますか?

また、別の質問ですが、エラー コードはどの程度具体的なものにする必要がありますか? たとえば、車のモデルが nil である場合、または車のモデルが有効なモデルではない (nil ではない、単に有効でない) 場合、2 つのエラー コードに違いがあるはずです。

4

2 に答える 2

0

私はあなたの状況を完全には理解していませんが、エラー コードを追加するのと同時に、つまりNSErrorオブジェクトを作成するときに、エラーの説明を に追加する必要があります。

[NSError errorWithDomain:@"aDomain" code:1 userInfo:@{NSLocalizedDescriptionKey: @"Please input valid car model."}];

次に、エラーをユーザーに表示する必要がある場合は、エラーから説明を取得します。

NSString *errorText = error.userInfo[NSLocalizedDescriptionKey];

于 2013-10-20T20:19:37.683 に答える
0

辞書が使えます。エラー コードをインスタンスに変換しNSNumber、関連する値をエラーの説明に設定します。次に、エラーを作成するときに、辞書から説明を取得します。

于 2013-10-20T20:12:55.270 に答える