为什么Xcode 6.1在IOS 8模拟器中死亡[NSLocale preferredLanguages]

问题描述:

昨天Xcode更新至v6.1。为什么Xcode 6.1在IOS 8模拟器中死亡[NSLocale preferredLanguages]

现在,[NSLocale preferredLanguages]被返回在iPhone,但仅用于IOS 8空数组 - 无论是在iPhone 5和6级的仿真器。 IOS 7模拟器仍然正常工作。

物理iPhone 6设备似乎并没有受到影响 - 这仅仅是模拟器。

通常的尝试 - 清洁工程,重新启动的Xcode,重新启动的Mac - 都没有什么区别。那么,最好的策略是什么 - 等待Xcode 6.1.1,还是向苹果列表发送投诉(哪一个)?

+0

可能重复的[iOS8.1模拟器总是使用美国键盘布局尽管德国硬件键盘](http://stackoverflow.com/questions/26146668/ios8-1-simulator-always-uses-us-keyboard-layout-despite-german-hardware-keyboard) – 2014-10-29 01:54:26

+0

也有同样的问题。项目中的一个目标接收1个对象的preferredLanguages,但同一个项目的另一个目标会收到一个空的preferredLanguages。 iPhone 6.1.1上的iPhone模拟器IOS8 – poGUIst 2015-02-06 11:30:57

我已经标记了这个作为一个愚蠢的考虑。全局偏好设置在iOS 8.1模拟器中不起作用。本地化就是这样的全球偏好。请参阅:

iOS8.1 Simulator always uses US keyboard layout despite german hardware keyboard

至于“战略” ...你可以只注意到它在发行说明中记录了已知问题,等待修复,或者您也可以在http://bugreport.apple.com

提交雷达
+0

我向苹果提交了一个雷达,并且收到一条消息,表示他们已经意识到了这一点。我的策略是使用默认值,如果数组在模拟器中恢复为空,并等待修复。 – Bill 2014-11-16 06:46:32

首先,他们是模拟器而不是仿真器。其次,在Xcode 6.1(6A1052c)和任何iOS 8.1模拟器下,我没有看到[NSLocale preferredLanguages]的空数组,但我总是看到"en"返回,无论在系统设置中选择何种语言。正如你所看到的,我确实看到了任何iOS 7模拟器的正确行为。在Changing language on iOS 8.1 simulator does not work更多信息:

我想,如果一个尚未申请文件中的错误提出申诉。

here中所述,您可以使用类别currentLocale方法调配。该类别允许一次覆盖项目中一般语言和区域设置的所有目标。

此外,您可以分别使用每个目标的方案设置。 如果你在你的应用程序许多本地化,

enter image description here

您可以为每个目标方案设置更改Application languageApplication region。您甚至可以为每个本地化制定一个单独的目标以加快语言测试。

Product -> Scheme -> Edit scheme... 

enter image description here

+0

我欠你一杯啤酒。谢谢你的提示! – 2015-01-11 17:57:02

设置产品展示 - >计划 - >首选项...并没有帮助我,所以我做了一个简单的解决方法:

NSString *language = [[NSLocale preferredLanguages] count] > 0 ? 
    [[NSLocale preferredLanguages] objectAtIndex:0] : 
    @"en";