我正在使用最新的 SDK 开发 iOS 5.0+ 应用程序。
我想显示一个UIPickerView
国家列表。这些国家将按字母顺序排序。当用户选择一个国家时,我必须存储它的 ISO 代码。
这是我现在用来使国家名称本地化的代码:
+ (NSArray*)countriesNames
{
NSLocale *locale = [NSLocale currentLocale];
NSArray *countryArray = [NSLocale ISOCountryCodes];
NSMutableArray *sortedCountryArray = [[NSMutableArray alloc] init];
for (NSString *countryCode in countryArray)
{
NSString* displayNameString = [locale displayNameForKey:NSLocaleCountryCode
value:countryCode];
[sortedCountryArray addObject:displayNameString];
}
[sortedCountryArray sortUsingSelector:@selector(localizedCompare:)];
return sortedCountryArray;
}
但是,我需要使用一些东西,例如 a NSDictionary
; 让我知道获取 ISO 代码和本地化名称。
我尝试使用 aNSDictionary
而不是 a NSArray
:
+ (NSDictionary*)countriesNames
{
NSLocale *locale = [NSLocale currentLocale];
NSArray *countryArray = [NSLocale ISOCountryCodes];
NSMutableDictionary* sortedCountryDic = [[NSMutableDictionary alloc] init];
for (NSString *countryCode in countryArray)
{
NSString* displayNameString = [locale displayNameForKey:NSLocaleCountryCode
value:countryCode];
[sortedCountryDic setObject:countryCode forKey:displayNameString];
}
[[sortedCountryDic allKeys] sortUsingSelector:@selector(localizedCompare:)];
return sortedCountryDic;
}
但我得到一个编译时异常:No visible @interface for 'NSArray' declares the selector 'sortUsingSelector:'
.
这里:
[[sortedCountryDic allKeys] sortUsingSelector:@selector(localizedCompare:)];
如何对所有键进行排序?
有没有办法使用它的 displayName 来获取 ISOCode?