我正在使用最新的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;
}
但是,我需要使用一些东西,例如NSDictionary
;让我知道获取ISO代码和本地化名称。
我尝试使用NSDictionary
代替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:)];
如何排序allKeys?
有没有办法使用displayName来获取ISOCode? strong>
答案 0 :(得分:2)
sortUsingSelector:NSMutableArray的方法不是NSArray的方法 你可以使用sortedArrayUsingSelector对数组进行排序,你将获得一个包含已排序内容的新数组
- (NSArray *)sortedArrayUsingSelector:(SEL)comparator
+ (NSArray*)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];
}
return [[sortedCountryDic allKeys] sortedArrayUsingSelector:@selector(localizedCompare:)];
}