0
NSString *part = self.navigationItem.title;
    if (part == @"Case") {
        NSLog(@"title: %@", part);
    }

タイトルはログに記録されませんが、次の場合は次のようになります。

NSLog(@"title: %@", part);

私は得る:

title: Case

これは私のエラーですか?確かにスペースはありません。

どんな助けでも大歓迎です。

4

4 に答える 4

4

文字列を比較するには、使用する必要がありますisEqualToString

if ([part isEqualToString:@"Case"]) {
    NSLog(@"title: %@", part);
}
于 2012-08-17T23:05:09.333 に答える
0

そのような文字列を比較することはありません。

isEqualToString:
于 2012-08-17T23:05:01.067 に答える
0

試す

if([part isEqualToString:@"Case"])
于 2012-08-17T23:05:59.283 に答える
0

Obj-Cオブジェクトで使用==すると、ポインターのみが比較されます。これは、すべてのobj-cオブジェクトに当てはまります。obj-cオブジェクトを比較する標準的な方法は-isEqual:、次のようにです。

if ([oneObj isEqual:anotherObj]) ...

文字列の場合、と呼ばれる特殊なバージョンが-isEqualToString:あるので、次のように言うことができます

if ([part isEqualToString:@"Case"]) ...

NSString*引数はwhileである必要があるため、特殊な関数はほとんどの場合、型チェックを改善するために提供されてい-isEqual:ますid。それを除けば、一般的な場合よりもわずかにパフォーマンスが向上しますが、-isEqual:それはほとんど問題になりません。

他のいくつかのクラスには、、、および他の多数のような特殊な比較関数もあり-[NSData isEqualToData:]ます-[NSArray isEqualToArray:]

于 2012-08-17T23:06:03.753 に答える