iOS学习笔记之字典排序

有时候拼接参数会用到字典传过来的参数而且是要排序的,下面我们看看应该怎么去做!
  NSDictionary *params = @{
                             @"name":@"LinH",
                             @"hometown":@"Dongying",
                             @"userID":@"330909199301271234",
                             @"phone":@"18814868888"
                             };

这个参数字典中一共有4个key:name、hometown、userID、phone。
我们该怎么样把这四个字符串按升序排列呢?

首先我们定义一个数组,存储字典中的所有key值:

NSArray *keyArray = [params allKeys];

接下来我们定义一个排序数组,存储排序好之后的key值

    NSArray *sortArray = [keyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        return [obj1 compare:obj2 options:NSNumericSearch];
    }];

sortedArrayUsingComparator方法是苹果为我们提供的一个数组排序方法,利用block语法来完成排序功能。

而这时,我们排序好的key值,已经按顺序存储在sortArray数组中,这时我们再创建一个数组,来按升序存储key对应的Value,通过遍历sortArray的方法。

    NSMutableArray *valueArray = [NSMutableArray array];
    for (NSString *sortString in sortArray) {
        [valueArray addObject:[params objectForKey:sortString]];
    }

现在我们有两个数组,分别对应升序排序的key和value,所以再创建一个keyValue的数组来存储每一个key和value的格式。

    NSMutableArray *signArray = [NSMutableArray array];
    for (int i = 0; i < sortArray.count; i++) {
        NSString *keyValueStr = [NSString stringWithFormat:@"%@:%@",sortArray[i],valueArray[i]];
        [signArray addObject:keyValueStr];
    }

最后的一步,就是用“,”把每个字符串拼接起来,很简单。

    NSString *sign = [signArray componentsJoinedByString:@","];
    return sign;

这时,字符串sign里存储的就是要求我们完成的,没有进行MD5校验的签名字符串了,可以打印出来看一下。

[24923:3184830] hometown:Dongying,name:LinH,phone:18814868888,userID:330909199301271234

可以看到hometown,name,phone,userID已经按首字母排序并且完成拼接。所以字典的排序我们就讲到这里,MD5加密下一篇再来讲述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值