OC中如何把字典中的数据拼接成url字符串

 

在使用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 的实现方法,如果大家看后赶脚还比较虚的话,建议根据上面的介绍,自己动手实现下。

posted @ 2016-12-14 10:47  Edison666  阅读(1837)  评论(0编辑  收藏  举报