Ios NSLocaleCountryCode返回nil

Ios NSLocaleCountryCode返回nil,ios,foundation,country,nslocale,Ios,Foundation,Country,Nslocale,我有一个bugreport,在下面一行中声明了一个崩溃,其中客户端是NSMutableDictionary [client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"]; 我的猜测是,NSLocaleCountryCode在这一行中返回nil,这将导致在NSDictionary中添加一个nil对象,这将导致崩溃。问题是,以前有没有人经历过这样的问题?对于当前语言环

我有一个bugreport,在下面一行中声明了一个崩溃,其中客户端是
NSMutableDictionary

[client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"];
我的猜测是,
NSLocaleCountryCode
在这一行中返回nil,这将导致在
NSDictionary
中添加一个nil对象,这将导致崩溃。问题是,以前有没有人经历过这样的问题?对于
当前语言环境
,是否有任何原因导致
NSLocaleCountryCode
可能为零?文档中没有任何关于返回nil值的内容,我认为这将始终返回一个有效的国家/地区

致以最良好的祝愿, Michael

NSLocale
是“系统区域设置”时,有人遇到过这个问题。在编码时,您需要更具防御性,如果密钥为
nil
,则不填充该密钥,或者使用
[NSNull null]

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

我的情况是,出于调试目的,我在Xcode的运行模式中选择了自定义语言。我有恩,不是系统语言


您是否知道在什么情况下,
currentLocal
将等于
systemLocale
?不知道,但很明显,有时国家代码并不总是填充的,因此需要在您的最终词典中可选。我们的许多用户都有相同问题的经验。他们在更新我们的应用程序后遇到了这个问题。你听说过currentLocale会因为应用商店的应用更新而突然改变行为吗?我也有同样的问题,我不知道是什么原因导致
currentLocale
没有国家代码。这将在实际设备或测试中重新设置零国家代码:设置>常规>国际>地区格式>世界语?如果它只发生在测试期间,那么它可能就是@olejnjak在下面提到的。这发生在生产中的多个真实设备上。