在使用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. 【DP问题集】动态规划试题

    1.背包问题 给定n种物品和一背包.物品i的重量是wi,其价值为pi,背包的容量为C.问应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 分析: ①每个物品只有两种选择,要么就是塞到包里面, ...

  2. Combination Sum 解答

    Question Given a set of candidate numbers (C) and a target number (T), find all unique combinations ...

  3. C++静态成员函数不能调用非静态成员变量

    其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份.然而非静态成员变量和非 ...

  4. hdu 4355 Party All the Time(三分搜索)

    Problem Description In the Dark forest, there is a Fairy kingdom where all the spirits will go toget ...

  5. Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作

    详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...

  6. C++ 实现Trim

    一.字符串去空格(没有处理字符串中间的空格) lTrim:除去字符串开头的空格 eg."    abc123    " --> "abc123    " ...

  7. web前端技术归类

    1.以屏幕可用宽和高的百分比来定义弹出框的宽和高 var trueWidth = $(top.window).width() * 0.9;var trueHeight = $(top.window). ...

  8. C# 和Java的foreach的不同用法

    循环语句为苦逼的程序猿们提供了很大的便利,有while.do...while.for和 foreach.而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的. 作为两个开发语言, ...

  9. Entity Framework 6 Code First创建

    基本上我是DB先设计好的,所以就按现存在的table去写程式. 1.Web.config里配置Db连接字串,Connection String Name为DefaultConnection <c ...

  10. 关于OC-省市区习题

    对于省市区的问题,关键在于搞清楚数组嵌套字典,字典里面装数组的多重嵌套关系,沉下心来,捋清楚思路, 实在看不懂就多打几遍,这道题理解了,熟练了对之后学习很有好处. 代码如下: NSString *pa ...