iOS模拟器:更改语言不会更改[NSDate date]输出的格式

时间:2015-02-11 21:14:52

标签: ios objective-c xcode nsdateformatter nslocale

我正在尝试为我编写的一段代码编写测试,该代码使用NSDateFormatter将日期转换为en_US_POSIX。测试似乎在运行时启动iOS模拟器,并且在此处更改语言似乎也会更改运行测试时使用的语言。

有没有办法可以通过编程方式设置模拟器的语言,以便特定的测试(或测试套件)使用我想要测试的正确语言?

[更新]我尝试在我的方案中使用“-AppleLanguages”和“-AppleLocales”参数,但在测试运行期间似乎都没有影响语言 - [[NSLocale currentLocale] localeIdentifier]仍然返回en_US,并且[NSDate date]仍然以正常yyyy-MM-dd HH:mm:ss ZZZ格式输出。

[更新]我不相信这是重复的。文章引用改变设置中的语言没有任何效果,但我可以在我的模拟器中执行此操作,并在我的应用程序中查看键盘语言更改。问题围绕着对[NSDate date]的简单调用,总是以en_UTC样式格式返回日期,而不管使用非罗马字符集的语言,如阿拉伯语。


[解决]我找到了解决方案。显然,[NSDate date]等函数的输出由系统LOCALE决定,而不是语言。删除-AppleLanguages参数并将其替换为-AppleLocale ar_AE会导致[NSDate date]的输出显示在阿拉伯语中,这正是我正在寻找的。

1 个答案:

答案 0 :(得分:1)

您使用哪种Xcode版本?如果您使用的是Xcode6.1(或6.1.1),则模拟器存在错误。请参阅iOS8.1 Simulator always uses US keyboard layout despite german hardware keyboard