zoukankan      html  css  js  c++  java
  • 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 的实现方法,如果大家看后赶脚还比较虚的话,建议根据上面的介绍,自己动手实现下。

  • 相关阅读:
    c++继承中的内存布局
    函数调用的原理4点:函数产生名不同,压栈顺序不同,不应由客户清理,客户清理则可执行文件大小更大(许多参考文章,有汇编解释)
    黑马程序员:Java基础总结----JavaBean 内省
    汇编语言理解指针(指针就是汇编的间接寻址,其实就是一个简单方便的运算指令,计算完毕直接就赋值,不是从内存中去取值后赋值)
    设计项目时候的几个小标记
    SendTextMessage如何打开记事本并显示指定内容
    汇编语言---call和ret指令
    汇编语言转移指令规则汇总
    SharePoint Access Service-PowerShell
    对所有CPU寄存器的简述(16位CPU14个,32位CPU16个)
  • 原文地址:https://www.cnblogs.com/lanbodada/p/6178346.html
Copyright © 2011-2022 走看看