iOS工具 -对字典的键值对儿进行排序

键值对儿排序

1 - 代码封装:我们对 NSMutableDictionary 进行扩展

// - NSMutableDictionary+stringSortedFromDictionary.h

 1 #import <Foundation/Foundation.h>
 2 @interface NSMutableDictionary (stringSortedFromDictionary)
 3 
 4 // 无序排列:键值对儿以 & 连接
 5 + (NSString*)stringFromMutDicUnordered:(NSMutableDictionary*)dic;
 6 
 7 // 以 allKeys 的首字母升序排列:键值对儿以 & 连接
 8 + (NSString*)stringFromMutDicOrderedByInitial:(NSMutableDictionary*)dic;
 9 
10 @end

// - NSMutableDictionary+stringSortedFromDictionary.m

 1 #import "NSMutableDictionary+stringSortedFromDictionary.h"
 2 @implementation NSMutableDictionary (stringSortedFromDictionary)
 3 
 4 /* 如需对返回结果进行 UTF-8 编码,在相应方法中的最后返回值处修改以下代码即可
 5 
 6     编码:方式一
 7     NSString *str = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef)string,NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8 ));
 8     return str;
 9 
10  
11     编码:方式二
12     NSString *str = [NSString stringWithCString:[string UTF8String] encoding:NSUnicodeStringEncoding];
13     return str;
14 
15 */
16 
17 // 无序排列:键值对儿以 & 连接
18 + (NSString*)stringFromMutDicUnordered:(NSMutableDictionary*)dic{
19 
20     NSString *finalStr = @"";
21     for (NSString *key in dic) {
22 
23         NSString *str1 = [NSString stringWithFormat:@"%@=%@",key,dic[key]];
24 
25         if([finalStr isEqualToString:@""]){
26 
27             finalStr = str1;
28         }else{
29 
30             finalStr = [NSString stringWithFormat:@"%@&%@",str1,finalStr];
31         }
32     }
33 
34     return finalStr;
35 }
36 
37 // 以 allKeys 的首字母升序排列:键值对儿以 & 连接
38 + (NSString*)stringFromMutDicOrderedByInitial:(NSMutableDictionary*)dic{
39 
40     NSMutableString *contentString  =[NSMutableString string];
41     NSArray *keys = [dic allKeys];
42 
43     // 字符串按字母顺序排序
44     NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
45         return [obj1 compare:obj2 options:NSNumericSearch];
46     }];
47 
48     // 字符串拼接
49     for (NSString *categoryId in sortedArray) {
50 
51         [contentString appendFormat:@"%@=%@&", categoryId, [dic valueForKey:categoryId]];
52     }
53 
54     // 过滤最后字符 &
55     NSString *finalStr =[contentString substringToIndex:contentString.length - 1];
56     return finalStr;
57 
58 }
59 @end

 

posted on 2017-05-04 18:43  低头捡石頭  阅读(46)  评论(0)    收藏  举报

导航