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   低头捡石頭  阅读(42)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示