1

URL からコンテンツを取得する文字列があり、それを使用しようとすると、思ったように動作しません。

次のような URL の内容で NSString を初期化すると:

NSString *strFromURL = [[NSString alloc] initWithContentsOfURL:someURLReturningTextHELLO encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",strFromURL); // returns "HELLO" // as expected

しかし、私がしようとすると:

if (strFromURL == @"HELLO") { NSLog(@"IT WORKS"); } // This doesn't happen

私が同じプロセスを行うとき:

NSString *mySimpleString = @"HELLO";
if (mySimpleString == @"HELLO") { NSLog(@"IT WORKS"); } // This works

私の質問は、後で IF ステートメントで使用できる URL からコンテンツを取得するにはどうすればよいですか?

*私はObjective-Cが初めてです。ありがとう!

4

3 に答える 3

5

あなたが求めるときは、オブジェクトif (strFromURL == @"HELLO")の等価性を比較していますが、文字列は比較していません。2つの定数文字列の比較を呼び出すと機能しますが、比較されたオブジェクトの文字列が等しいかどうかに関係なく失敗します。

if ([strFromURL isEqualToString:@"HELLO"])代わりに電話してください。

于 2011-02-21T10:30:39.340 に答える
2

オブジェクトの場合、オペレーターはポインターの等価性==をテストします。つまり、両方のポインターが同じオブジェクトを指している場合、2 つの変数は同じです。URL から取得した文字列は、定数文字列と同じオブジェクトではないため、失敗します。ポインターではなく文字列自体が等しいかどうかをテストする NSString のメソッドを使用します。isEqualToString:

于 2011-02-21T10:39:23.663 に答える
1

isEqualToString メソッドと比較してみることができます

于 2011-02-21T10:29:18.603 に答える