为什么 Xcode 6.1 在 IOS 8 模拟器中杀死了 [NSLocale PreferredLanguages]

问题描述 投票:0回答:4

昨天 Xcode 更新至 v6.1。

现在,[NSLocale PreferredLanguages] 在 iPhone 中返回一个空数组,但仅适用于 IOS 8 - 在 iPhone 5 和 6 模拟器中都是如此。 iOS 7 模拟器仍然可以正常工作。

物理 iPhone 6 设备似乎不受影响 - 只是模拟器。

通常的尝试 - 清理项目、重新启动 Xcode、重新启动 Mac - 没有任何效果。那么,最好的策略是什么 - 等待 Xcode 6.1.1,还是向 Apple 列表发送投诉(哪一个)?

ios xcode6
4个回答
7
投票

您可以将类别与

currentLocale
方法混合一起使用,如此处中所述。该类别允许一次性覆盖项目中所有目标的通用语言和区域设置。

您还可以以单独的方式为每个目标使用方案设置。 如果您的应用程序中有很多本地化内容,

enter image description here

您可以在每个目标的方案设置中更改

Application language
Application region
。您甚至可以为每个本地化设置单独的目标,以加快语言测试速度。

Product -> Scheme -> Edit scheme...

enter image description here


0
投票

我已将其标记为骗局,以供考虑。 全局首选项在 iOS 8.1 模拟器中不起作用。 本地化就是这样一种全球偏好。 参见:

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

至于“策略”...您可以只注意到这是发行说明中记录的已知问题并等待修复,或者您可以在 http://bugreport.apple.com

提交雷达

0
投票

首先,它们是模拟器而不是仿真器。其次,在 Xcode 6.1 (6A1052c) 和任何 iOS 8.1 模拟器下,我没有看到

[NSLocale preferredLanguages]
返回空数组,但无论在系统设置中选择哪种语言,我总是看到
"en"
返回。正如您所指出的,我确实看到任何 iOS 7 模拟器的正确行为。

如果尚未提交错误投诉,我会提交错误投诉:更多信息请访问在 iOS 8.1 模拟器上更改语言不起作用


0
投票

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

NSString *language = [[NSLocale preferredLanguages] count] > 0 ? 
    [[NSLocale preferredLanguages] objectAtIndex:0] : 
    @"en";
© www.soinside.com 2019 - 2024. All rights reserved.