我有一个bug报告,说明了以下行中的崩溃,其中client是NSMutableDictionary
的实例
[client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"];
我的猜测是,NSLocaleCountryCode
在此行中返回nil,这会导致向NSDictionary
添加一个nil对象,从而导致崩溃。问题是,有没有人经历过这样的问题? NSLocaleCountryCode
是否有任何理由currentLocale
为零?文档没有说明返回零值,我认为这总是会返回一个有效的国家。
祝你好运, 迈克尔
答案 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.
答案 1 :(得分:8)
当NSLocale
是“系统区域设置”时,有others遇到此问题。如果密钥是nil
或使用[NSNull null]
,则需要在编码时更加防守:
NSLocale *locale = [NSLocale currentLocale];
NSString *country = [locale objectForKey:NSLocaleCountryCode];
if (country != nil)
{
[client setObject:country forKey:@"country"];
}