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,而不是系统语言。