xcode 6.1 iOS 8.1 NSLocale displayNameForKey NSLocaleIdentifier return nil

后端 未结 5 2131
旧时难觅i
旧时难觅i 2021-02-12 20:52
- (NSString *)countryNameByCode:(NSString*)countryCode
{
    NSString *identifier = [NSLocale localeIdentifierFromComponents:@{NSLocaleCountryCode: countryCode}];
    NSStrin         


        
相关标签:
5条回答
  • 2021-02-12 21:04

    This is a known Apple issue for iOS 8.1 simulator only - not reproducible on 8.1 devices. See below issue description from Xcode 6.1 release notes:

    Localization and Keyboard settings (including 3rd party keyboards) are not correctly honored by Safari, Maps, and developer apps in the iOS 8.1 Simulator. [NSLocale currentLocale] returns en_US and only the English and Emoji keyboards are available. (18418630, 18512161).

    See Xcode 6.1 Release Notes for more details.

    0 讨论(0)
  • 2021-02-12 21:14

    Please try below code, it should work. I tried it on my device as well as simulator 8.1

    - (NSString *)countryNameByCode:(NSString*)countryCode {
      return [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode];
    }
    
    0 讨论(0)
  • 2021-02-12 21:14
    NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0];
    
    0 讨论(0)
  • 2021-02-12 21:18

    This works for me

    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);
     }
    
    0 讨论(0)
  • 2021-02-12 21:19
    - (NSString *)countryNameByCode:(NSString*)countryCode 
    {
        NSString *identifier = [[NSLocale preferredLanguages] firstObject];
        NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:identifier];
        NSString *countryName = [locale displayNameForKey:NSLocaleIdentifier value:countryCode];
        return countryName;
    }
    

    I don't understand why [[NSLocale currentLocale] displayNameForKey...] doesn't return country name in iOS 8 but the code above should resolve your problem.

    0 讨论(0)
提交回复
热议问题