iOS 給dictionary字典排序

前提

字典的key或者value是數字的字符串.例如:

                    {"陜西省": "610000",
                    "河南省": "410000",
                    "江西省": "360000",
                    "海南省": "460000",
                    "上海市": "310000",
                    "吉林省": "220000",
                    "其他": "990000",
                    "安徽省": "340000",
                    "天津市": "120000",
                    "河北省": "130000",
                    "重慶市": "500000",
                    "甘肅省": "620000"}
swift
func getOrderArray(options: AnyObject?) -> [String]{
        let optionType = options as! [String:String]
根據option傳的是value或key進行排序
        let optionTypeArray = TKOnlineTool.DictWithOption(optionType, option: .VALUE)
        var IdType = [String]()
遍歷字典數組,將key重新組成一個有順序的數組
        for (key , _) in optionTypeArray {
            IdType.append(key)
        }
        return IdType
    }
/**
     對字典進行排序
     
     - parameter dict:   需要排序的字典
     - parameter option: 根據key或value排序
     
     - returns: 排序后的字典數組
     */
    class func DictWithOption(dict : [String : String],option : SortOption) ->[(String, String)] {
        //排序后得到的字典數組
        var sortResult = [(String,String)]()
        switch option {
        case .KEY:
            sortResult = dict.sort { $0.0 < $1.0 }
        case .VALUE:
            sortResult = dict.sort { $0.1 < $1.1 }
        }
        //從排序后的數據中獲取新的字典數組
        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,組成的數組
    NSLog(@"%@",selfPokerKeySort);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容