1

iOS でユーザー言語を特定しようとしています。StackOverflow には、このトピックに関するいくつかの回答があり、次のように私を大いに助けてくれました: iOS で現在のデバイス言語を取得していますか?

NSLog で探している値 (つまり、「en」または「de」) を正常に取得できますが、if/then ステートメントでこれを質問するたびに、機能していないように見えます。テスト用にviewDidLoadにこれがあります:

- (void)viewDidLoad
{
[super viewDidLoad];
NSString *myLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@"The current languague is %@.", myLanguage);

if (myLanguage == @"de") {
    self.myLabel.text = @"German";
} else if (myLanguage == @"en") {
    self.myLabel.text = @"English";
} else {
    self.myLabel.text = @"didn't work";
}
}

デバイスが英語またはドイツ語に設定されているかどうかに関係なく、最後の else ステートメントのみが表示されます。ただし、NSLog は en または de を正しく表示します。

私は何を間違っていますか?

4

1 に答える 1

1

NSStringの比較はisEqualToString:メソッドを使用して行われます。コードでは、2つの異なるNSStringオブジェクトを比較していますが、代わりに、それぞれのコンテンツを比較する必要があります。

いずれかの種類のオブジェクトが2つある場合、それらのすべてのメンバーが同じ値を持っていても、それらは常に異なります。そのため、メンバーに基づいてオブジェクトを比較するために、このようなメソッドが存在します。

交換:

if (myLanguage == @"de") 

if ([myLanguage isEqualToString:@"de"])

else ifコード内のsについても同じです。

于 2012-09-29T11:10:07.993 に答える