无法在iOS上查询当前用户语言

时间:2012-09-29 11:01:01

标签: ios nslocale

我正在尝试确定iOS中的用户语言。 StackOverflow在这个主题上有几个答案,这对我有很大帮助,例如:Getting current device language in 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。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

使用isEqualToString:方法完成NSString比较。在您的代码中,您要比较两个不同的NSString对象,而您必须比较每个对象的内容。

如果你有两个任何类型的对象,它们总是不同的,即使它们的所有成员都具有相同的值。这就是为什么存在这样的方法,比较基于其成员的对象。

替换:

if (myLanguage == @"de") 

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

并且代码中else if的内容相同。