【问题标题】:Getting Locales on iOS 5在 iOS 5 上获取语言环境
【发布时间】:2011-07-05 08:21:34
【问题描述】:

我有这段代码可以从 NSLocale 获取一些信息(当前国家、国家名称)。

它在 iOS 4.3 中运行没有任何问题,但在 iOS 5 中崩溃。

经过检查,似乎 [locale localeIdentifier] 和 [locale displayNameForKey: value:] 根本不起作用,但在构建它时没有检测到警告和错误。

我该怎么做才能让它在 iOS 5 中运行?

// Create a pool for autoreleased objects

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // Get the current country and locale information of the user
    NSLocale *locale = [NSLocale currentLocale];
    NSString *currentLocaleID = [locale localeIdentifier];    //returns en_US instead of the actual country stored in phone settings
    NSDictionary *localeDictionary = [NSLocale componentsFromLocaleIdentifier:currentLocaleID];     
    NSString *currentCountry = [locale displayNameForKey:NSLocaleCountryCode 
                                                   value:[localeDictionary objectForKey:NSLocaleCountryCode]];     // returns nil

    // Get the list of country codes
    NSArray *countryCodeArray = [NSLocale ISOCountryCodes];
    NSMutableArray *sortedCountryNameArray = [NSMutableArray array];


    for (NSString *countryCode in countryCodeArray) {
        NSString *displayNameString = [locale displayNameForKey:NSLocaleCountryCode value:countryCode];   //displayNameString is nil after executing this line
        [sortedCountryNameArray addObject:displayNameString];   //app crashes here
    }

    // Drain the autoreleased pool
    [pool drain];

【问题讨论】:

  • 由于保密协议,我们还不能在这里回答 iOS5 问题。在 Apple 开发者论坛中提问和/或向 Apple 提交 RADAR 票证作为错误。

标签: iphone ios5 nslocale


【解决方案1】:

这在 iOS 5.1 或 5.1.1 中不会崩溃

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多