NSLocaleCountryCode返回nil

Mic*_*chs 14 country foundation ios nslocale

我有一个bug报告,在下一行中说明崩溃,其中client是一个实例 NSMutableDictionary

[client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"];
Run Code Online (Sandbox Code Playgroud)

我的猜测是,NSLocaleCountryCode在这一行中返回nil,这导致向一个NSDictionary导致崩溃的nil对象添加.问题是,有没有人经历过这样的问题?有什么理由NSLocaleCountryCode可以为零currentLocale吗?文档没有说明返回零值,我认为这将总是返回一个有效的国家.

最好的问候,迈克尔

ole*_*jak 16

我的情况是,出于调试目的,我在Xcode中选择了运行方案中的自定义语言.我有EN,不是系统语言.

Xcode方案语言


tro*_*foe 8

还有其他人遇到过这个问题,什么时候NSLocale是"系统区域设置".你需要在你的编码中更加防守,要么不填写密钥,如果是nil或使用[NSNull null]:

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

  • 这将重新生成零国家/地区代码:设置>常规>国际>区域格式>世界语 (5认同)