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