5

そのような初心者の質問をお詫びします。

3つの文字列を受け取り、部分文字列を返すクラスメソッドを作成しました。

特定の基準が満たされた場合にのみ部分文字列が返されるようにする条件ステートメントを作成しました。ただし、部分文字列を抽出できない場合に何を返す必要があるのか​​わかりません。現時点では、デフォルトの「エラー」文字列を返すメソッドがありますが、これはベストプラクティスではない可能性があると感じています。

これが私の方法です:

+(NSString *)ExtractSubstringFrom:(NSString *)sourceString 
             Between:(NSString *)firstString And:(NSString *)secondString {


             NSRange stringRangeOne = [sourceString rangeOfString:secondString];
             NSString *resultString;

             if (stringRangeOne.location != NSNotFound) {
             resultString = [sourceString substringToIndex:stringRangeOne.location]; 
             }

             NSRange stringRangeTwo = [sourceString rangeOfString:firstString];

             if (stringRangeTwo.location !=NSNotFound) {
             resultString = [resultString substringFromIndex:stringRangeTwo.location+stringRangeTwo.length];
             return resultString; 
             }

             else return @"Error!";

             //To do... improve error checking

             }

このメソッドをよりエラーしやすいものにするにはどうすればよいですか?

4

2 に答える 2

6

Objective Cでこの種のエラーを処理するには、いくつかの方法があります。

  • デフォルト値を返します-通常、デフォルト値はですnil。オブジェクトに対する操作の実行nilはObjectiveCで許可されているため、これは比較的安全です。
  • NSErrorオブジェクトの生成-これは、接続や構成の問題など、エンドユーザーが対処できるエラーのより一般的なものです。この種のAPIの不幸な副作用は、追加のパラメーターを設定して渡す必要があることです。
  • アサーションの使用-これは、「プログラミングエラー」を処理するための優れた方法です。つまり、プログラムの引数が指定された範囲外にある場合です。
  • 例外を投げる-このオプションはその言語で利用可能ですが、Appleはそれを使用することを強くお勧めしません。私はこのオプションを自分で使用したことはありませんが、完全を期すためにここで言及しました。
于 2013-03-24T21:09:14.163 に答える
0

ここでの実際のベストプラクティスは、クラスメソッド内でこれを行わず、代わりに、値を受け入れるものにKey Value Validationを実装し、設定される前に検証メソッドを呼び出すことです。したがって、この検証/変更ロジックをこのメソッドから削除し、代わりに検証メソッド内に配置します。コントローラーでは、値を設定する前に、検証メソッドと呼ばれる値が変更されます。これにより、検証ロジックで値を変更する(つまり、デフォルトに変更する)か、入力値を使用可能なものに強制変換できない場合にエラーを返す機会が与えられます。

Objective-Cでのエラー処理に関するより一般的な情報については、Objective-Cを使用したプログラミング:エラーの処理とエラー処理プログラミングガイドを参照してください。

于 2014-01-27T20:16:49.043 に答える