Xcode 6.1 iOS 8.1 NSLocale displayNameForKey NSLocaleIdentifier возвращает ноль
- (NSString *)countryNameByCode:(NSString*)countryCode
{
NSString *identifier = [NSLocale localeIdentifierFromComponents:@{NSLocaleCountryCode: countryCode}];
NSString *countryName = [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:identifier];
return countryName;
}
countryName no. Почему?
Ответы
Ответ 1
Это известная проблема Apple для симулятора iOS 8.1 - не воспроизводится на 8.1 устройствах. См. Ниже описание проблемы из примечаний к выпуску Xcode 6.1:
Настройки локализации и клавиатуры (включая сторонние клавиатуры) неправильно соблюдены Safari, Maps и приложения для разработчиков в iOS 8.1. Симулятор. [NSLocale currentLocale] возвращает en_US, и доступны только английские и Emoji клавиатуры. (18418630, 18512161).
Подробнее см. Примечания к выпуску Xcode 6.1.
Ответ 2
Пожалуйста, попробуйте код ниже, он должен работать. Я попробовал это на своем устройстве, а также симулятор 8.1
- (NSString *)countryNameByCode:(NSString*)countryCode {
return [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode];
}
Ответ 3
Это работает для меня
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);
}
Ответ 4
- (NSString *)countryNameByCode:(NSString*)countryCode
{
NSString *identifier = [[NSLocale preferredLanguages] firstObject];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:identifier];
NSString *countryName = [locale displayNameForKey:NSLocaleIdentifier value:countryCode];
return countryName;
}
Я не понимаю, почему [[NSLocale currentLocale] displayNameForKey...]
не возвращает имя страны в iOS 8
, но приведенный выше код должен решить вашу проблему.
Ответ 5
NSString * language = [[NSLocale preferredLanguages] objectAtIndex: 0];