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 ดังนั้นรหัสประเทศคือ 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