NSLocale - menemukan CountryCode dan kemudian menggunakannya untuk menyebarkan kode

Saya bingung mengapa kode ini tidak berfungsi sesuai komentar di bawah:

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
}

Lokalnya adalah en_US sehingga kode negaranya adalah AS. Semuanya benar pada bagian itu. Apa yang saya lakukan salah, dan bagaimana cara menampilkan "Country is USA"?

Terima kasih!

Pengujian pada iOS 5.1 dan 6.0, hasilnya sama


person Ben T    schedule 04.07.2012    source sumber


Jawaban (2)


String tidak dapat dibandingkan menggunakan operator ==, coba gunakan isEqualToString: sebagai gantinya:

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

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

Digunakan NL sejak saya di Belanda :)

person Anne    schedule 04.07.2012
comment
Wow, tidak percaya aku melewatkannya. Terima kasih! - person Ben T; 04.07.2012

Anda harus menggunakan metode isEqualToString: untuk membandingkan isi dua string. Operator == menguji kesetaraan kedua pointer dan karenanya mengembalikan 0.

person Ole Begemann    schedule 04.07.2012