2013-03-04 149 views
14

我有,指出在以下行,其中客戶端的NSMutableDictionaryNSLocaleCountryCode返回nil

[client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"]; 

我的猜測是一個實例崩潰一個bug報告,該NSLocaleCountryCode返回該行,從而導致增加了無零對象到NSDictionary這將導致崩潰。問題是,有沒有人遇到過這樣的問題?是否有任何原因NSLocaleCountryCode可能爲零?該文檔沒有說任何關於返回零值的內容,我認爲這將始終返回一個有效的國家。

最好的問候, 邁克爾

+0

這是發生在實際設備上還是在測試中?如果它只在測試過程中發生,可能是@olejnjak在下面提到的。 – ThomasW 2018-01-15 02:20:14

+0

這發生在生產中的多個真實設備上。 – 2018-01-15 18:36:35

回答

8

others誰經歷過這個問題,當NSLocale是「系統區域設置」。你需要在你的編碼較爲抗跌,由要麼不填充的關鍵,如果它是nil或使用[NSNull null]

NSLocale *locale = [NSLocale currentLocale]; 
NSString *country = [locale objectForKey:NSLocaleCountryCode]; 
if (country != nil) 
{ 
    [client setObject:country forKey:@"country"]; 
} 
+0

你有什麼信息在什麼情況下'currentLocal'將等於'systemLocale'? – 2013-03-04 16:49:06

+0

不,我不明白,有時國家代碼並不總是填充,因此需要在最終字典中可選。 – trojanfoe 2013-03-04 17:53:34

+0

我們在很多用戶的相同問題上都有經驗。他們在更新我們的應用程序後遇到此問題。你有沒有聽說currentLocale可以突然改變行爲,作爲應用程序商店更新應用程序的結果? – nebillo 2013-03-26 12:01:35

12

我的情況是,對調試的目的我已經選擇在Xcode中運行計劃的自定義語言。我有EN,而不是系統語言。

Xcode scheme language