xcode 6.1 iOS 8.1 NSLocale displayNameForKey NSLocaleIdentifier return nil
objective-c (5)
Este es un problema conocido de Apple solo para el simulador iOS 8.1, no reproducible en dispositivos 8.1. Vea a continuación la descripción del problema de las notas de lanzamiento de Xcode 6.1:
Las configuraciones de localización y teclado (incluidos los teclados de terceros) no se respetan correctamente en Safari, Maps y las aplicaciones de desarrollador en el simulador iOS 8.1. [NSLocale currentLocale] devuelve en_US y solo están disponibles los teclados Inglés y Emoji. (18418630, 18512161).
Vea las Notas de lanzamiento de Xcode 6.1 para más detalles.
- (NSString *)countryNameByCode:(NSString*)countryCode { NSString *identifier = [NSLocale localeIdentifierFromComponents:@{NSLocaleCountryCode: countryCode}]; NSString *countryName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:identifier]; return countryName; }
Esto devolvió nil
. ¿Por qué?
Esto funciona para mi
NSLocale *currentLocale = [[NSLocale alloc] initWithLocaleIdentifier:[NSLocale currentLocale].localeIdentifier];
for (AVSpeechSynthesisVoice *voice in [AVSpeechSynthesisVoice speechVoices]) {
NSString *languageLocalised = [currentLocale displayNameForKey:NSLocaleIdentifier value:voice.language];
NSLog(@"%@ displayNameForKey %@: %@", currentLocale.localeIdentifier, voice.language, languageLocalised);
}
Por favor intente código debajo, debería funcionar. Lo probé en mi dispositivo así como en el simulador 8.1.
- (NSString *)countryNameByCode:(NSString*)countryCode {
return [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode];
}
- (NSString *)countryNameByCode:(NSString*)countryCode
{
NSString *identifier = [[NSLocale preferredLanguages] firstObject];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:identifier];
NSString *countryName = [locale displayNameForKey:NSLocaleIdentifier value:countryCode];
return countryName;
}
No entiendo por qué [[NSLocale currentLocale] displayNameForKey...]
no devuelve el nombre del país en iOS 8
pero el código anterior debe resolver su problema.
NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];