1

我正在尝试确定 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。

我究竟做错了什么?

4

1 回答 1

1

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

如果您有两个任意类型的对象,它们总是不同的,即使它们的所有成员具有相同的值。这就是为什么存在这样的方法,根据对象的成员来比较对象。

代替:

if (myLanguage == @"de") 

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

对于else if代码中的 s 也是如此。

于 2012-09-29T11:10:07.993 回答