Objective-C中把数组中字典中的数据转换成URL
可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对。而在OC我们要用字典(Dictionary)来存储,当然了Java用的是Map来存储键值对。下面我们将实现一个极为实用的小例子,网络请求有get和post方法,两种方法各有其优点。在表单提交时Post方法用的更多一些,URL传值则会用到Get方法。在用PHP编程的时候肯定会经常拼接url来传参或者请求,在IOS开发中会向服务器通过url请求一些数据,所以对url的拼接是少不了的,下面不是什么高深的技术,只是OC中集合类的一个小应用模块,欢迎批评指正,转载请注明出处。
在OC中我们如何把字典中的数据拼接成我们要请求的URL字符串呢?下面有一个需求:在一个数组中有多个字典,每个字典中的数据是请求一条URL中的参数,我们需要做的就是把每个字典转换为URL,在把每个URL放在数组中返回。下面的代码还是对数组,字符串和字典的具体的应用。
上面的需求对于熟练操作字典,数组,字符串的小伙伴们应该是小菜一碟吧,今天写出来就是想记录一些学习的点点滴滴,上面的时拼接URL, 下面的博客会URL拆分成字典,敬请期待吧!废话少说,还是代码走起。
1.生成测试数据
字典中的键我们一般是通过宏定义来初始化的,目的是便于维护,提高代码编写效率下面是对key的宏定义:
|
1
2
3
4
5
|
//定义字典键#define A @"a"#define B @"b"#define C @"c"#define D @"d" |
添加测试数据
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//容纳字符串拼接后的字符串NSMutableArray *arrayURL = [NSMutableArray new];//存放可变字典的数组NSMutableArray *arrayDic = [NSMutableArray new];//生成测试数据NSDictionary *dic1 = @{A : @10, B : @20};NSDictionary *dic2 = @{A : @10, B : @20, C : @30};NSDictionary *dic3 = @{A : @10, C : @30};//把数组加入字典[arrayDic addObject:dic1];[arrayDic addObject:dic2];[arrayDic addObject:dic3]; |
2.接下来我们要做的就是把上面可变数组中的字典中的数据转换为URL,转换的具体过程如下
|
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
32
33
34
35
|
//从数组中取出字典,把每个然后拼接成urlfor (int i = 0; i < arrayDic.count; i ++){ NSLog(@"对数组中第%d个字典操作\n:%@",i+1 ,arrayDic[i]); //URL NSMutableString *URL = [NSMutableString stringWithFormat:@"http://www.baidu.com"]; //获取字典的所有keys NSArray * keys = [arrayDic[i] allKeys]; //拼接字符串 for (int j = 0; j < keys.count; j ++) { NSString *string; if (j == 0) { //拼接时加? string = [NSString stringWithFormat:@"?%@=%@", keys[j], arrayDic[i][keys[j]]]; } else { //拼接时加& string = [NSString stringWithFormat:@"&%@=%@", keys[j], arrayDic[i][keys[j]]]; } //拼接字符串 [URL appendString:string]; } NSLog(@"第%d个字典转换的URL:%@",i+1, URL); //加入数组 [arrayURL addObject:URL]; } |
代码说明:
1.对数组中的每个字典遍历
2.对每个字典中的键值对遍历
3.url中如果是第一个参数拼接时加上?
4.如果不是第一个参数拼接时加上&
5.把拼接好的字符串URL加入到可变数组中然后返回存有URL的数组
最终转换结果为:
|
1
2
3
4
5
6
|
2014-08-12 11:41:18.927 HelloOC[997:303] 转换完成:( "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") |
那么我们应如和把转换后的结再逆向成原来得数据格式呢?下面的博客中会提到相应的方法,谢谢朋友们的支持,不足之处还望批评指正。
Objective-C中把数组中字典中的数据转换成URL的更多相关文章
- OC中如何把数组中字典的数据转换成URL?
在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么 ...
- Sliverlight linq中的数组筛选数据库中的数据
首先 什么是linq呢 ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特 ...
- C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)
C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译. foreach (int x in myArray) { x++; //错误代码,因为改变 ...
- cocos2d-x把json数据解析到数组或字典中(libjson库)
以前在cocos2d-x项目中用到json解析,集成了libjson库后发现网上提供的解析方法大多是在解析过程中取得值,并没有将解析结果有效的保存起来,于是摸索一番,把解析结果根据数据格式存到数组或字 ...
- 浅谈PHP中的数组和JS中的数组
最近在做前后端对接的时候,遇到一个问题,前端要求返回的数据格式是左边的,但是我通过json_encode返回到的数据格式是右边的 注意:数据格式从"[]"(数组)变成了&quo ...
- java:JavaScript3(innerHTML,post和get,单选框,多选框,下拉列表值得获取,JS中的数组,JS中的正则)
1.innerHTML用户登录验证: <!DOCTYPE> <html> <head> <meta charset="UTF-8"> ...
- OC数组和字典中存入niu值
在NSArray和NSDictionary中nil有特殊的含义.但是某些时候,我们必须要放入nil怎么办? 要想放入nil就必须用到一个类NSNull,这个类只有一个类方法,就是null.[NSNul ...
- iOS开发-- 使用NSNumber将int、float、long等数据类型加入到数组或字典中
// 设置值 NSNumber *number=[NSNumber numberWithInt:45]; // 取值 NSLog(@"NSNumber %d",[number in ...
- OC中如何把字典中的数据拼接成url字符串
在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么 ...
随机推荐
- BFS/DFS算法介绍与实现(转)
广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索.其中有很多的算法都用到了这两种思想,比 ...
- day 2 Linux基础
6.用户.群组和权限 1) 新建用户natasha,uid为1000,gid为555,备注信息为"master" useradd natasha usermod -u1000 na ...
- python之路 - 爬虫
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...
- Usaco*Monthly Expense
Description Farmer John是一个令人惊讶的会计学天才,他已经明白了他可能会花光他的钱,这些钱本来是要维持农场每个月的正常运转的.他已经计算了他以后N(1<=N<=100 ...
- xss其他标签下的js用法总结大全
前段时间我遇到一个问题,就是说普通的平台获取cookie的语句为↓ Default <script src=js地址></script> 1 <scr ...
- linux下Vim的使用
在vim中移动光标跟其他的编辑器中有很大的区别,不过一旦学会了,就会飞速的在文本中移动 复制粘贴dd 删除光标所在行dw 删除一个字(word)x 删除当前字符X 删除前一个字符D 删除到行末yy 复 ...
- 初步认识Less
LESS 是一个流行的样式表语言,它提供了 CSS3 也未曾实现的多种功能,让您编写 CSS 更加方便,更加直观.LESS 已经被广泛使用在多种框架中 ( 例如:BootStrap).本文将介绍 LE ...
- js生成二维码 中间有logo
描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码.此插件是能够独立使用的,体积也比较 ...
- Hbuilder开发HTML5 APP之侧滑菜单
1.思路: 其时有2个WebView,一个main是用来装主页面,一个menu是用来装菜单(为提高性能,菜单项是采用了预加载方式的,预加载时为了避免和主页面争夺资源,采用延时加载,例如: //plus ...
- SharePoint 2010 Survey的Export to Spreadsheet功能怎么不见了?
背景信息: 最近用户报了一个问题,说他创建的Survey里将结果导出成Excel文件(Export to spreadsheet)的按钮不见了. 原因排查: 正常情况下,这个功能只存在于SharePo ...