2011-11-11 70 views
26

Tôi cần chuyển đổi danh sách mã quốc gia thành một mảng quốc gia. Đây là những gì tôi đã làm cho đến nay.Chuyển đổi Mã Quốc gia thành Tên Quốc gia

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    pickerViewArray = [[NSMutableArray alloc] init]; //pickerViewArray is of type NSArray; 
    pickerViewArray =[NSLocale ISOCountryCodes]; 
} 
+0

Xin lỗi, nó là loại NSMutableArray; – user1036183

+2

Chấp nhận một số câu trả lời (trên các câu hỏi trước của bạn) để bạn trao lại điều gì đó cho cộng đồng. – Jef

Trả lời

55

Bạn có thể nhận được một định danh cho một mã quốc gia với localeIdentifierFromComponents: và sau đó nhận được displayName của nó.

Vì vậy, để tạo ra một mảng với tên quốc gia mà bạn có thể làm:

NSMutableArray *countries = [NSMutableArray arrayWithCapacity: [[NSLocale ISOCountryCodes] count]]; 

for (NSString *countryCode in [NSLocale ISOCountryCodes]) 
{ 
    NSString *identifier = [NSLocale localeIdentifierFromComponents: [NSDictionary dictionaryWithObject: countryCode forKey: NSLocaleCountryCode]]; 
    NSString *country = [[NSLocale currentLocale] displayNameForKey: NSLocaleIdentifier value: identifier]; 
    [countries addObject: country]; 
} 

Để sắp xếp nó theo thứ tự abc bạn có thể thêm

NSArray *sortedCountries = [countries sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

Lưu ý rằng các mảng được sắp xếp là không thay đổi.

+0

Cảm ơn nhưng danh sách không được sắp xếp! làm thế nào để làm điều đó ? – user1036183

+0

Tôi đã chỉnh sửa câu trả lời của mình giả sử bạn muốn sắp xếp theo thứ tự bảng chữ cái. – Jef

+0

Nó hoạt động như một sự quyến rũ. Làm tốt! : D –

25

này sẽ làm việc trong iOS8:

NSArray *countryCodes = [NSLocale ISOCountryCodes]; 
NSMutableArray *tmp = [NSMutableArray arrayWithCapacity:[countryCodes count]]; 
for (NSString *countryCode in countryCodes) 
{ 
    NSString *country = [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode]; 
    [tmp addObject: country]; 
} 
6

Trong iOS 9 trở lên bạn có thể lấy tên quốc gia từ mã quốc gia bằng cách làm:

NSString *countryName = [[NSLocale systemLocale] displayNameForKey:NSLocaleCountryCode value:countryCode]; 

đâu countryCode rõ ràng là mã quốc gia . (ví dụ: "Hoa Kỳ")

17

Trong Swift 3 lớp phủ Nền tảng thay đổi khá một chút.

let countryName = Locale.current.localizedString(forRegionCode: countryCode) 

Nếu bạn muốn tên nước bằng các ngôn ngữ khác nhau mà bạn có thể chỉ định miền địa phương mong muốn:

let locale = Locale(identifier: "es_ES") // Country names in Spanish 
let countryName = locale.localizedString(forRegionCode: countryCode) 
+1

Cảm ơn bạn rất nhiều :) – fancy

Các vấn đề liên quan