Question

I have a bugreport that states a crash in the following line, where client is an instance of NSMutableDictionary

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

My guess is, that NSLocaleCountryCode returns nil in this line, which leads to adding a nil object to an NSDictionary which would lead to a crash. The question is, has anybody experienced an issue like this before? Are there any reasons NSLocaleCountryCode could be nil for the currentLocale? The documentation doesn't say anything about returning a nil value and I thought this would always return a valid country.

Best regards, Michael

Was it helpful?

Solution 2

There are others who have experienced this issue, when NSLocale is the "system locale". You need to be more defensive in your coding, by either not populating the key if it's nil or using [NSNull null]:

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

OTHER TIPS

My case was that for debug purposes I had selected custom language in run scheme in Xcode. I had EN, not system language.

Xcode scheme language

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top