相关文章推荐
个性的汉堡包  ·  大数据思维变革对司法裁判的启示_中华人民共和 ...·  3 月前    · 
爱听歌的炒饭  ·  数字孪生开发 数字孪生开发软件_c# ...·  1 年前    · 
怕老婆的皮带  ·  如何使用Python中的OpenCV更改图像 ...·  2 年前    · 
怕老婆的烈酒  ·  HarmonyOS - ...·  2 年前    · 
考研的丝瓜  ·  Mac使用docker-compose快速创 ...·  2 年前    · 
Code  ›  Objective-C中把URL请求的参数转换为字典开发者社区
url 数组 objective-c
https://cloud.tencent.com/developer/article/1018771
留胡子的花生
2 年前
作者头像
lizelu
0 篇文章

Objective-C中把URL请求的参数转换为字典

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 青玉伏案 > Objective-C中把URL请求的参数转换为字典

Objective-C中把URL请求的参数转换为字典

作者头像
lizelu
发布 于 2018-01-11 17:27:12
1.1K 0
发布 于 2018-01-11 17:27:12
举报

上一篇 博客中是把URL转换为字典,那么我们如何把URL请求中的参数封装成字典,然后再封装成数组呢?对OC中字符串操作熟练的小伙伴们应该觉得这是一个a+b的问题,没错把URL中的参数转换为字典主要是对字符串的截取,关键是怎么个截法,才能把字符串中的参数列表分别转换成键值对。下面是小菜自己的转换思路,如果有更好的结局方法还请批评指正,相互学习交流一下,转载请注明出处。

首先我们得会一个字符串拆分函数 componentsSeparatedByString:@"&",把字符串按照&进行拆分,然后返回字符串数组

​    ​输入的数据的格式如下(装有url的字符串数组):

1     "http://www.baidu.com?a=10&b=20",     "http://www.baidu.com?a=10&b=20&c=30",     "http://www.baidu.com?a=10&c=30" )

​    ​接下来就是要把每个url中的参数列表转换成字典,主要代码如下:

​    ​    ​代码说明:

​    ​    ​    ​1.先把参数列表在url中的参数列表的起始位置获取到,通过方法rangeOfString方法获取

​    ​    ​    ​2.位置获取到以后我们可以把参数列表从url字符串中提取出来,通过substringFromIndex来获取。

​    ​    ​    ​3.通过componentsSeparatedByString把参数列表进行每项的拆分

​    ​    ​    ​4.通过componentsSeparatedByString把每项进行键值对的拆分

​    ​    ​    ​5.把键值对存入字典

​    ​    ​    ​5.把字典存入数组

1 45

NSMutableArray * dataArray()     //用来作为函数的返回值,数组里里面可以存放每个url转换的字典     NSMutableArray *arrayData = [NSMutableArray arrayWithCapacity:4];     //获取数组,数组里装得是url     NSMutableArray *arrayURL = appendURL();     NSLog(@"获取到得URL数组如下:\n%@", arrayURL);     //循环对数组中的每个url进行处理,把参数转换为字典     for (int i = 0; i < arrayURL.count; i ++)         NSLog(@"第%d个URL的处理过程:%@", i+1, arrayURL[i]);         //获取问号的位置,问号后是参数列表         NSRange range = [arrayURL[i] rangeOfString:@"?"];         NSLog(@"参数列表开始的位置:%d", (int)range.location);         //获取参数列表         NSString *propertys = [arrayURL[i] substringFromIndex:(int)(range.location+1)];         NSLog(@"截取的参数列表:%@", propertys);         //进行字符串的拆分,通过&来拆分,把每个参数分开         NSArray *subArray = [propertys componentsSeparatedByString:@"&"];         NSLog(@"把每个参数列表进行拆分,返回为数组:\n%@", subArray);         //把subArray转换为字典         //tempDic中存放一个URL中转换的键值对         NSMutableDictionary *tempDic = [NSMutableDictionary dictionaryWithCapacity:4];         for (int j = 0 ; j < subArray.count; j++)             //在通过=拆分键和值             NSArray *dicArray = [subArray[j] componentsSeparatedByString:@"="];             NSLog(@"再把每个参数通过=号进行拆分:\n%@", dicArray);             //给字典加入元素             [tempDic setObject:dicArray[1] forKey:dicArray[0]];         NSLog(@"打印参数列表生成的字典:\n%@", tempDic);         [arrayData addObject:tempDic];     NSLog(@"打印参数字典生成的数组:\n%@", arrayData);     return arrayData; }

​    ​上面代码具体的执行步骤:

1 23

2014-08-12 13:46:14.126 HelloOC[1195:303] 第1个URL的处理过程:http://www.baidu.com?a=10&b=20 2014-08-12 13:46:14.126 HelloOC[1195:303] 参数列表开始的位置:20 2014-08-12 13:46:14.126 HelloOC[1195:303] 截取的参数列表:a=10&b=20 2014-08-12 13:46:14.127 HelloOC[1195:303] 把每个参数列表进行拆分,返回为数组:     "a=10",     "b=20" 2014-08-12 13:46:14.127 HelloOC[1195:303] 再把每个参数通过=号进行拆分: 2014-08-12 13:46:14.127 HelloOC[1195:303] 再把每个参数通过=号进行拆分:

 
推荐文章
个性的汉堡包  ·  大数据思维变革对司法裁判的启示_中华人民共和国最高人民检察院
3 月前
爱听歌的炒饭  ·  数字孪生开发 数字孪生开发软件_c# 数字孪生界面-CSDN博客
1 年前
怕老婆的皮带  ·  如何使用Python中的OpenCV更改图像的对比度和亮度?-火山引擎
2 年前
怕老婆的烈酒  ·  HarmonyOS - 基于ArkUI(JS)实现信件弹出效果-开源基础软件社区-51CTO.COM
2 年前
考研的丝瓜  ·  Mac使用docker-compose快速创建部署容器 - 我叫于牛逼 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号