NSLocaleCountryCode возвращает ноль
У меня есть отчет об ошибке, который сообщает о сбое в следующей строке, где клиент является экземпляром NSMutableDictionary
[client setObject:[[NSLocale currentLocale] objectForKey:NSLocaleCountryCode] forKey:@"country"];
Я думаю, что NSLocaleCountryCode
возвращает ноль в этой строке, что приводит к добавлению объекта ноль в NSDictionary
что приведет к аварии. Вопрос в том, сталкивался ли кто-нибудь с подобной проблемой раньше? Есть ли причины NSLocaleCountryCode
может быть ноль для currentLocale
? В документации ничего не говорится о возврате нулевого значения, и я думал, что это всегда вернет действительную страну.
С наилучшими пожеланиями, Майкл
2 ответа
Есть другие, кто сталкивался с этой проблемой, когда NSLocale
это "язык системы". Вы должны быть более оборонительными в своем кодировании, либо не заполняя ключ, если он nil
или используя [NSNull null]
:
NSLocale *locale = [NSLocale currentLocale];
NSString *country = [locale objectForKey:NSLocaleCountryCode];
if (country != nil)
{
[client setObject:country forKey:@"country"];
}
Мой случай состоял в том, что для целей отладки я выбрал собственный язык в схеме запуска в XCode. У меня был EN, а не системный язык.