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

  • 相关阅读:
    错误提示:Wrong Local header signature: 0xE011CFD0
    “CreateRiaClientFilesTask”任务意外失败。 未能加载文件程序集“System.ComponentModel.DataAnnot...
    jquery tagsinput监听输入、修改、删除事件
    bootstrap之常见组件应用1
    多啦A梦的制作
    Java 多线程
    Java集合的复习
    10种排序算法分析
    C++ 中vector的学习
    android学习流程确立
  • 原文地址:https://www.cnblogs.com/lanbodada/p/6178346.html
Copyright © 2011-2022 走看看