NSLocaleCountryCode返回nil

我有一个bugreport,在下面的行中,其中客户端是一个NSMutableDictionary的实例崩溃

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

我的猜测是, NSLocaleCountryCode在这一行返回nil,这导致添加一个零对象的NSDictionary ,这将导致崩溃。 问题是,有没有人遇到过这样的问题? 有没有什么原因NSLocaleCountryCode可能为零当前的currentLocale ? 文档没有说任何关于返回一个零值,我认为这将始终返回一个有效的国家。

最好的问候,迈克尔

还有其他人遇到这个问题,当NSLocale是“系统区域设置”。 你需要在编码方面更具防御性,如果它是nil或者使用[NSNull null] ,不要填充密钥:

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

我的情况是,为了debugging的目的,我在Xcode的runscheme中select了自定义语言。 我有EN,而不是系统语言。

Xcode方案语言