前提
字典的key或者value是數(shù)字的字符串.例如:
{"陜西省": "610000",
"河南省": "410000",
"江西省": "360000",
"海南省": "460000",
"上海市": "310000",
"吉林省": "220000",
"其他": "990000",
"安徽省": "340000",
"天津市": "120000",
"河北省": "130000",
"重慶市": "500000",
"甘肅省": "620000"}
swift
func getOrderArray(options: AnyObject?) -> [String]{
let optionType = options as! [String:String]
根據(jù)option傳的是value或key進(jìn)行排序
let optionTypeArray = TKOnlineTool.DictWithOption(optionType, option: .VALUE)
var IdType = [String]()
遍歷字典數(shù)組,將key重新組成一個(gè)有順序的數(shù)組
for (key , _) in optionTypeArray {
IdType.append(key)
}
return IdType
}
/**
對字典進(jìn)行排序
- parameter dict: 需要排序的字典
- parameter option: 根據(jù)key或value排序
- returns: 排序后的字典數(shù)組
*/
class func DictWithOption(dict : [String : String],option : SortOption) ->[(String, String)] {
//排序后得到的字典數(shù)組
var sortResult = [(String,String)]()
switch option {
case .KEY:
sortResult = dict.sort { $0.0 < $1.0 }
case .VALUE:
sortResult = dict.sort { $0.1 < $1.1 }
}
//從排序后的數(shù)據(jù)中獲取新的字典數(shù)組
return sortResult
}
OC
NSDictionary *selfCard = @{
@"陜西省": @"610000",
@"河南省": @"410000",
@"江西省": @"360000",
@"海南省": @"460000",
@"上海市": @"哈哈",
@"吉林省": @"220000",
@"其他": @"990000",
@"安徽省": @"340000",
@"天津市": @"120000",
@"河北省": @"130000",
@"重慶市": @"500000",
@"甘肅省": @"620000"};
NSArray *selfPokerKeySort = [NSArray array];
selfPokerKeySort = [selfCard keysSortedByValueUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSLog(@"%@----%@",obj1,obj2);
// NSComparisonResult result = [obj1 compare:obj2];
// return result == NSOrderedDescending;
int v1 = [obj1 intValue];
int v2 = [obj2 intValue];
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}];
//排序好的key,組成的數(shù)組
NSLog(@"%@",selfPokerKeySort);