NSLocale preferredLanguages objectAtIndex:0总是返回"en"

S1U*_*S1U 25 iphone nsuserdefaults region nslocale ios8.1

模拟器的语言已经改为日语,为什么[[NSLocale preferredLanguages] objectAtIndex:0] 总是返回"en"

首选语言和地区都与"en"无关,它"en"来自哪里?

这是截图

试图获得[[NSLocale preferredLanguages] objectAtIndex:2],然后崩溃显示*** Terminating app due to uncaught exception 'NSRangeException', reason: '-[__NSCFArray objectAtIndex:]: index (2) beyond bounds (1)

这是否意味着模拟器中没有设置任何语言?太奇怪了!

在使用iOS8.1/7.1升级到Xcode 6.1之前,这种情况从未发生过.

同时,在我的iPhone 5上试过同样的东西,控制台输出正确的东西.

为什么这么奇怪?有没有人有这样的问题?

更新:1

  • 删除Xcode和模拟器,然后从Mac Store下载重新安装.
  • 创建一个新的简单项目,更改simlulator的语言
  • 仍然总是"en".

哦! 怎么了....


更新:2

  • 今天,通过重新格式化HD重新安装了全新的Yosemite
  • 下载Xcode 6.1
  • 启动一个新的简单默认项目
  • 把这些代码
  • 更改/添加模拟器语言,日语,荷兰语,英语,
  • 天啊!只得到了"en"再次,日语和英语没有发现!

为什么还只能"en"找到一个?日语和英语在哪里?

模拟器怎么了?

我错过了什么吗?

J.W*_*ams 28

这是一个错误.这让我发疯了.Apple已经知道了.

看到这个答案:

尽管德国硬件键盘,iOS8.1模拟器始终使用美国键盘布局

还有这个:

iOS 8.1模拟器本地化中断(NSLocalizedString)

(在答案中有一个临时修复更改架构)

最好的,吉吉

  • 究竟.花了一整天的时间安装/卸载/重新安装Xcode 5.1.1,6.0.1,最终发现`NSLocale`无法正常工作是因为Xcode 6.1. (3认同)