NSLocale — поиск CountryCode и его использование для развертывания кода

Я в тупике, почему этот код не работает в соответствии с комментарием ниже:

NSString *countryCode = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
NSLog(@"Country Code: %@", countryCode);

if (countryCode == @"US") {
    NSLog(@"Country is USA"); // Does not execute since the if does not pass
}

Языковой стандарт — en_US, поэтому код страны — США. В этой части все правильно. Что я делаю не так и как сделать так, чтобы отображалась «Страна — США»?

Спасибо!

Тестирование на iOS 5.1 и 6.0, тот же результат


person Ben T    schedule 04.07.2012    source источник


Ответы (2)


Строки нельзя сравнивать с помощью оператора ==, попробуйте вместо этого использовать isEqualToString::

NSString *countryCode = [[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
NSLog(@"Country Code: %@", countryCode);

if ([countryCode isEqualToString: @"NL"]) {
    NSLog(@"Country is NL");
}

Использовал NL, так как я в Нидерландах :)

person Anne    schedule 04.07.2012
comment
Ничего себе, не могу поверить, что я пропустил это. Спасибо! - person Ben T; 04.07.2012

Вы должны использовать метод isEqualToString: для сравнения содержимого двух строк. Оператор == проверяет равенство двух указателей и поэтому возвращает 0.

person Ole Begemann    schedule 04.07.2012