Подтвердить что ты не робот

NSLocaleCountryCode возвращает nil

У меня есть bugreport, в котором говорится о сбое в следующей строке, где клиент является экземпляром NSMutableDictionary

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

Я предполагаю, что NSLocaleCountryCode возвращает нуль в этой строке, что приводит к добавлению объекта nil к NSDictionary, что приведет к сбою. Вопрос в том, кто-нибудь испытал такую ​​проблему раньше? Существуют ли какие-либо причины NSLocaleCountryCode для n currentLocale? В документации ничего не говорится о возврате нулевого значения, и я думал, что это всегда вернет действительную страну.

С уважением, Майкл

4b9b3361

Ответ 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