NSLocaleCountryCode返回nil

时间:2013-03-04 13:15:52

标签: ios foundation country nslocale

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

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

我的猜测是,NSLocaleCountryCode在此行中返回nil,这会导致向NSDictionary添加一个nil对象,从而导致崩溃。问题是,有没有人经历过这样的问题? NSLocaleCountryCode是否有任何理由currentLocale为零?文档没有说明返回零值,我认为这总是会返回一个有效的国家。

祝你好运, 迈克尔

2 个答案:

答案 0 :(得分:15)

My case was that for debug purposes I had selected custom language in run scheme in Xcode. I had EN, not system language.

Xcode scheme language

答案 1 :(得分:8)

NSLocale是“系统区域设置”时,有others遇到此问题。如果密钥是nil或使用[NSNull null],则需要在编码时更加防守:

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