Get country with ISO country code
muqaddar
Administrateur
Aussitôt dit, aussitôt travaillé.
J'arrive à avoir mon nom de pays à partir du country code comme ça (en passant le locale identifier en texte):
NSString *identifier = [NSLocale localeIdentifierFromComponents:[NSDictionary dictionaryWithObject:countryCode forKey:NSLocaleCountryCode]];
NSString *country = [[[NSLocale alloc] initWithLocaleIdentifier:@en_UK] displayNameForKey:NSLocaleIdentifier value:identifier];
Mais pas à partir de [NSLocale currentLocale]:
NSString *country = [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:countryCode];
Country est toujours nil.
Qu'ai-je loupé ?
Je ne veux pas envoyer en string le locale identifier.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- Tu as testé sur Device ou sur Simulateur ? (Rappelles-toi aussi le bug connu mentionné dans les Release Notes Apple de Xcode 6.1 concernant le fait qu'ils remontent la mauvaise locale quand tu testes dans le simulateur)
- Et sinon tes 2 codes ne sont pas identiques (dans le second cas tu demandes le "displayNameForKey:" directement sur le NSLocaleCountryCode et la string "countryCode", alors que dans le premier cas tu demandes d'abord le identifier à partir du countryCode, puis tu demandes le "displayNameForKey" sur ce NSLocaleIdentifier, donc en 2 temps). Pourquoi comparer des codes différents ?
Le code suivant par exemple ne retournerait-il pas ce que tu veux ?
[NSLocale currentLocale] est bien OK sur device et simulateur (en_US sur le simu).
Mon code marche bien sur le device (je n'avais pas testé !). Le tien aussi.
C'est donc sur le simulateur qu'il y a un bug... ce qui est bien chiant pour mes développements.
Merci !
J'ai trouvé une parade au bug:
Voir ici:
http://stackoverflow.com/questions/26613011/xcode-6-1-ios-8-1-nslocale-displaynameforkey-nslocaleidentifier-return-nil