2015-02-11 20 views
0

我想寫一段代碼的測試,我寫的使用NSDateFormatter將日期轉換爲en_US_POSIX。測試似乎在運行時啓動iOS模擬器,並且在此處更改語言似乎也會更改運行測試時使用的語言。已解決:iOS模擬器:改變語言不會改變[NSDate日期]輸出的格式

有沒有一種方法可以以編程方式設置模擬器的語言,以便特定的測試(或測試套件)將以我想測試的正確語言進行操作?

[更新]我用「-AppleLanguages」和「-AppleLocales」參數爲我的計劃嘗試過,但似乎都不在試驗過程中影響語言 - [[NSLocale currentLocale] localeIdentifier]仍返回en_US[NSDate date]仍然輸出作爲一個正常的格式爲yyyy-MM-dd HH:mm:ss ZZZ

[更新]我不認爲這是重複的。文章引用了改變設置中的語言沒有任何作用,但我可以在我的模擬器中做到這一點,並看到我的應用程序鍵盤語言更改。該問題圍繞對[NSDate日期]的簡單調用進行,總是以en_UTC樣式格式返回日期,而不管使用的是非羅馬字符集的語言,如阿拉伯語。

[更新]我找到了解決方案。顯然,[NSDate date]等函數的輸出由系統LOCALE確定,而不是語言。刪除-AppleLanguages參數並將其替換爲-AppleLocale ar_AE導致[NSDate date]的輸出顯示爲阿拉伯語,這正是我所需要的。

+0

您是如何格式化-AppleLanguages的參數的? '-AppleLanguages(es)'? – 2015-02-11 23:47:48

+0

我試過使用短格式(ar)以及全名,如(阿拉伯語)。在這兩種情況下,[NSLocale preferredLanguages] objectAtIndex:0]都會返回「ar」,因此它似乎接受這兩種格式。 – Argus9 2015-02-12 14:48:23

回答

1

您使用哪種Xcode版本?如果您使用的是Xcode6.1(或6.1.1),則模擬器有一個錯誤。請參閱iOS8.1 Simulator always uses US keyboard layout despite german hardware keyboard

+0

我不是100%確定這是同樣的問題 - 我可以進入模擬器的設置>常規>語言設置,並在那裏設置語言,如阿拉伯語,而且鍵盤實際上會在我的應用程序中更改。問題是這個值似乎沒有影響輸出NSDate的格式。它總是以en_UTC格式。 – Argus9 2015-02-12 14:50:34

+0

此問題已修復最新的iOS8.2beta或iOS8.3beta模擬器。所以你可以用最新的iOS8.2beta模擬器嘗試同樣的事情。 – kmugitani 2015-02-13 00:49:43