NSLocaleCountryCode返回nil

NSLocaleCountryCode返回nil

问题描述:

我有,指出在以下行,其中客户端的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

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

我的情况是,对调试的目的我已经选择在Xcode中运行计划的自定义语言。我有EN,而不是系统语言。

Xcode scheme language