在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了。而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么实现的呢?今天小编就将为大家分享一篇在网上看到的一位大神对Objective-C中把数组字典的数据转换成URL的剖析,一起来看看吧。

1.生成测试数据

字典中的键,我们一般是通过宏定义来初始化的,目的是便于维护,提高代码编写效率,下面是对key的宏定义:

//定义字典键

#define A @"a"

#define B @"b"

#define C @"c"

#define D @"d"

添加测试数据

//容纳字符串拼接后的字符串

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];

//容纳字符串拼接后的字符串

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};

//把数组加入字典

[arrayDicaddObject:dic1];

[arrayDicaddObject:dic2];

[arrayDicaddObject:dic3];

2、数据转换成URL

 

接下来我们要做的就是把上面可变数组中的字典的数据转换为URL,转换的具体过程如下:

//从数组中取出字典,把每个然后拼接成url

for (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];

}

//从数组中取出字典,把每个然后拼接成url

for (int i = 0; i < arrayDic.count; i ++)

{

NSLog(@"对数组中第%d个字典操作n:%@",i+1 ,arrayDic[i]);

//URL

NSMutableString *URL = [NSMutableStringstringWithFormat:@"http://www.baidu.com"];

//获取字典的所有keys

NSArray * keys = [arrayDic[i]allKeys];

//拼接字符串

for (int j = 0; j < keys.count; j ++)

{

NSString *string;

if (j == 0)

{

//拼接时加?

string = [NSStringstringWithFormat:@"?%@=%@", keys[j], arrayDic[i][keys[j]]];

}

else

{

//拼接时加&

string = [NSStringstringWithFormat:@"&%@=%@", keys[j], arrayDic[i][keys[j]]];

}

//拼接字符串

[URLappendString:string];

}

NSLog(@"第%d个字典转换的URL:%@",i+1, URL);

//加入数组

[arrayURLaddObject:URL];

}

代码说明:

1.对数组中的每个字典遍历

2.对每个字典中的键值对遍历

3.url中如果是第一个参数拼接时加上?

4.如果不是第一个参数拼接时加上&

5.把拼接好的字符串URL加入到可变数组中然后返回存有URL的数组

最终转换结果为:

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"

)

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字符串的更多相关文章

  1. SQLserver将查询的字段中的数据 拼接成字符串用逗号隔开

    ,,'') 将查询的字段中的数据 拼接成字符串用逗号隔开

  2. Java将其他数据类型转换成JSON字符串格式

    Student.java package com.demo.servlet; import java.util.List; import java.util.Map; public class Stu ...

  3. 签名:实现参数字典排序,然后拼接为url参数形式

    在很多地方请求参数需要做处理例如: 步骤 1.参数字典排序. 2.拼接字符. /// <summary> /// 生成签名 /// </summary> /// <par ...

  4. 把DataTable中的数据拼接成XML时遇到的问题

    错误信息:System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Serve ...

  5. Pycharm中怎么给字典中的多个键-值对同时加上单引号

    今天看了个爬虫视频,崔庆才讲师的免费视频, 里面一个批量给header加引号2s完成,这波操作让我眼前一亮. 最终还是发现了骚操作的背后手速是真的快. pycharm中按ctrl+r 勾选右上角的Re ...

  6. Python中如何取字典中的键值

    1 for k,v in DictName.items(): 2 #遍历字典的键值对,k对应键,v对应值 3 #k,v 的名字可以自己取,DictName是字典名 举例: tv_dict = {'芒果 ...

  7. 如何将Oracle中同一列的多行记录拼接成一个字符串

    需要用wm_concat函数来实现. 如目前在emp表中查询数据如下: 要按照deptno相同的将ename以字符串形式合并,可用如下语句: 1 select deptno,wm_concat(ena ...

  8. SQL将表中某一类型的一列拼接成一行

    SELECT TypeName ,(SELECT ','+ UserName FROM [ContainerMembers] t WHERE TypeName= aa.TypeName FOR XML ...

  9. 把字典的key value 拼接成字符串加上签名加密

    - (NSString *)getSianKeyWithDic:(NSDictionary *)dic { //按字典排序 NSArray* arr = [dic allKeys]; arr = [a ...

随机推荐

  1. 经过一年时间的沉淀 再次回首 TCP Socket服务器编程--转

    ------------------ 前言 ------------------ 开发了这么多年,发现最困难的程序开发就是通讯系统. 其他大部分系统,例如CRM/CMS/权限框架/MIS之类的,无论怎 ...

  2. 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.1

    /** * 百度地图使用工具类-v1.5 * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email b ...

  3. Master Theorem

    Master theorem provides a solution in asymptotic terms to solve time complexity problem of most divi ...

  4. Ubuntu学习-简单指令

    查看是否安装了中文支持 locale -a 如果有 zh_CN.utf8 则表示系统已经安装了中文locale,如果没有则需要安装相应的软件包. 软件管理 apt ( Advanced Packagi ...

  5. HBase的基本操作

    1.输入hbase shell进入HBase shell

  6. 点滴记录——Centos 6.5 yum安装Ganglia

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701141 注:下面操作都仅仅是在一台机器上操作 1. 安装php支持  yum inst ...

  7. Cloudera Manager Free Edition 4.1 和CDH 4.1.2 简易安装教学

    转载:http://fenriswolf.me/2012/12/06/cloudera-manager-free-edition-4-1-和-cdh-4-1-2-简易安装教学/ 安装及管理一个大的Ha ...

  8. UIImageView~动画播放的内存优化

    我目前学到的知识,播放动画的步骤就是下面的几个步骤,把照片资源放到数组里面,通过动画animationImage加载数组,设置动画播放的 时间和次数完成播放. 后来通过看一些视频了解到:当需要播放多个 ...

  9. ProxyCreationEnabled 和 LazyLoadingEnabled 的关系

    我们会使用这两个设置来决定是否加载导航属性.默认情况这两个值都是true的,也就是说会以延迟加载的方式加载导航属性,也就是当我们访问导航属性的时候才会去查数据库获取导航属性的数据.db.Configu ...

  10. http://www.sufeinet.com/thread-655-1-1.html

    http://www.sufeinet.com/thread-655-1-1.html