2013-03-04 5 views
14

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

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

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

С наилучшими пожеланиями, Майкл

+0

ли это происходит на реальном устройстве или в тестировании? Если это происходит только во время тестирования, это может быть то, о чем говорит @olejnjak. – ThomasW

+0

Это произошло на нескольких реальных устройствах в производстве. –

ответ

8

Есть others, которые испытали этот вопрос, когда NSLocale является «языком системы». Вы должны быть более оборонительными вашим кодирование, либо не заселять ключ, если это nil или с помощью [NSNull null]:

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

У вас есть информация, при каких обстоятельствах 'currentLocal' будет равен' systemLocale'? –

+0

Нет. Я не понимаю, что иногда код страны не всегда заполняется и поэтому должен быть необязательным в вашем конечном словаре. – trojanfoe

+0

У нас есть опыт в том же выпуске от множества наших пользователей. Они сталкиваются с этой проблемой после обновления нашего приложения. вы когда-нибудь слышали, что currentLocale может внезапно изменить поведение в результате обновления приложения из магазина приложений? – nebillo

12

Моего дела в том, что для целей отладки я выбрал собственный язык в схеме выполнения в Xcode. У меня был EN, а не на системном языке.

Xcode scheme language

 Смежные вопросы

  • Нет связанных вопросов^_^