NSLocale preferredLanguages 总是检索“en”语言

Zet*_*aPR 5 ios

我正在尝试使用以下代码在我的设备中获取正确的语言(不在模拟器中):

 NSString * languageLocale = [[NSLocale preferredLanguages] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

它总是“en”, 但我当前的语言设置为西班牙语

有什么想法为什么检索总是“en”而不是当前的设备语言?

Ram*_*hna 5

我必须面对同样的问题。就我而言,它是通过在编辑方案中将应用程序语言设置为系统语言来解决的。

这是方法:

编辑方案 -> 选项 -> 应用程序语言 -> 系统语言。


Zet*_*aPR 1

经过一些研究,我发现关键的 AppleLanguages 被覆盖了。所以

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults objectForKey:@"AppleLanguages"];
Run Code Online (Sandbox Code Playgroud)

它返回一个包含被覆盖数据的字典列表。我刚刚这样做了:

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSDictionary * dict = [defaults dictionaryRepresentation];
for (id key in dict) {
    if([key isEqualToString:@"AppleLanguages"]){
        [defaults removeObjectForKey:key];
    }
}
[defaults synchronize];
Run Code Online (Sandbox Code Playgroud)

为了删除整个密钥并且系统重置它并返回正确的列表。