0

私は Objective-C 開発に不慣れで、すでに最初の問題に遭遇しています。文字列を引数として取り、その文字列を他の文字列と比較する関数を作成しようとしています。関数の擬似コードは次のようになります。

String string2
String string3

function compare_string (String string) {
  if (string == "a specific string" &&
      string == string2 &&
      string == string3) {
        // do something
      }
}

今まで私は次のものしか持っていません:

NSString *string2 = @"Second string";
NSString *string3 = @"Third string";

(void) compare_string: (NSString *) string {

しかし、関数内で入力文字列を呼び出す方法がわからないため、すでに行き詰まっていstringます。私は単に次のようなことをするべきですか

if (string == string2) { ... }

または、Objective-C で関数の引数を使用する別の方法はありますか?

4

2 に答える 2

3

これは次のようになります。

-(void)compareString:(NSString *string){
    if ( [string isEqualToString:@"a specific string"] && [string isEqualToString:string2] && [string isEqualToString:string3] ){
        // do something
    }
}

注:str1==str2はメモリ アドレスをisEqualToString:比較し、文字列の内容を比較します。

于 2013-03-12T16:26:21.743 に答える
1

NSStringのドキュメントを確認してください。すでにこれを行うメソッドがたくさんあります。そのため、独自の文字列比較コードを作成する必要はありません。

例は次のようになります

if ([string compare:string2] == NSOrderedSame) { ... }

これは、大文字と小文字を区別しないなどの複雑な比較を行う場合に便利です。

単純な平等のために、あなたはただ使うことができます

if ([string isEqualToString:string2]) { ... }

編集

私は質問を読み間違えました - これはあなたが尋ねたことに実際に関連する答えです

isEqual:同様にチェックするには、オブジェクトで定義されたメソッドを使用する必要があります。==ポインター値のみをチェックします。

このようにメソッドを書くことができます

- (void)compareString:(NSString *)string;
{
  if ([@[string, string, string] isEqual:@[ @"a specific string", string1, string2]]) {
    // do stuff
  }
} 

その後、それを呼び出すと、次のようになります

[self compareString:@"A string to compare"];


: 配列にまとめると、すべてを個別に比較するよりも読みやすくなります。

于 2013-03-12T16:27:24.283 に答える