【问题标题】:Why has Xcode 6.1 killed [NSLocale preferredLanguages] in IOS 8 simulators为什么 Xcode 6.1 在 IOS 8 模拟器中杀死了 [NSLocale preferredLanguages]
【发布时间】:2014-12-23 05:07:40
【问题描述】:

昨天 Xcode 更新到 v6.1。

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

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

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

【问题讨论】:

标签: xcode6


【解决方案1】:

您可以将类别与currentLocale 方法混合使用,如here 中所述。该类别允许一次覆盖项目中所有目标的通用语言和区域设置。

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

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

Product -> Scheme -> Edit scheme...

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我向 Apple 提交了一份雷达,并收到一条消息说他们已经知道了。如果数组在模拟器中返回为空,我的策略是使用默认值,然后等待修复。
    【解决方案3】:

    首先,它们是模拟器,而不是模拟器。其次,我没有看到在 Xcode 6.1 (6A1052c) 和任何 iOS 8.1 模拟器下为 [NSLocale preferredLanguages] 返回一个空数组,但无论系统设置中选择的语言如何,我总是看到返回 "en"。正如您所指出的,我确实看到了任何 iOS 7 模拟器的正确行为。

    如果尚未提交错误投诉,我会提交错误投诉:更多信息请访问Changing language on iOS 8.1 simulator does not work

    【讨论】:

      【解决方案4】:

      Setting Product -> Scheme -> Preferences... 对我没有帮助,所以我做了一个简单的解决方法:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-24
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 2011-12-13
        相关资源
        最近更新 更多