Objective-C中把数组中字典中的数据转换成URL

可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对。而在OC我们要用字典(Dictionary)来存储,当然了Java用的是Map来存储键值对。下面我们将实现一个极为实用的小例子,网络请求有get和post方法,两种方法各有其优点。在表单提交时Post方法用的更多一些,URL传值则会用到Get方法。在用PHP编程的时候肯定会经常拼接url来传参或者请求,在IOS开发中会向服务器通过url请求一些数据,所以对url的拼接是少不了的,下面不是什么高深的技术,只是OC中集合类的一个小应用模块,欢迎批评指正,转载请注明出处。

在OC中我们如何把字典中的数据拼接成我们要请求的URL字符串呢?下面有一个需求:在一个数组中有多个字典,每个字典中的数据是请求一条URL中的参数,我们需要做的就是把每个字典转换为URL,在把每个URL放在数组中返回。下面的代码还是对数组,字符串和字典的具体的应用。

上面的需求对于熟练操作字典,数组,字符串的小伙伴们应该是小菜一碟吧,今天写出来就是想记录一些学习的点点滴滴,上面的时拼接URL, 下面的博客会URL拆分成字典,敬请期待吧!废话少说,还是代码走起。

1.生成测试数据

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


1

2

3

4

5

//定义字典键

#define A @"a"

#define B @"b"

#define C @"c"

#define D @"d"

?    ?    ?添加测试数据


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

//从数组中取出字典,把每个然后拼接成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];

    

}

?    ?    ?代码说明:

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

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

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

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

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

?    ?    ?最终转换结果为:


1

2

3

4

5

6

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

时间: 2024-08-02 02:51:16

Objective-C中把数组中字典中的数据转换成URL的相关文章

OC中如何把数组中字典的数据转换成URL?

在使用objective-c语言开发iOS应用中,会向服务器通过URL请求一些数据,因此对URL的拼接肯定少不了.而在iOS中,我们一般是通过将字典中的数据拼接成我们要请求的URL字符串,那这个是怎么实现的呢?今天小编就将为大家分享一篇在网上看到的一位大神对Objective-C中把数组字典的数据转换成URL的剖析,一起来看看吧. 1.生成测试数据 字典中的键,我们一般是通过宏定义来初始化的,目的是便于维护,提高代码编写效率,下面是对key的宏定义: //定义字典键 #define A @"a&

Sliverlight linq中的数组筛选数据库中的数据

首先 什么是linq呢 ? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. 它是.NET框架的扩展,它允许我们以数据库查询的方式查询数据集合. 借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据. 接下来讲讲我工作中用到的 linq中的数组筛选数据库中的数据 public List GetList1(string cardPhone,string

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响)

C#不允许在foreach循环中改变数组或集合中元素的值(注:成员的值不受影响),如以下代码将无法通过编译. foreach (int x in myArray) { x++; //错误代码,因为改变了元素的值 Console.WriteLine(x); } 如果要让自定义的数据类型支持foreach循环,则该类型必须实现IEnumerable<T>接口,且存在对应此列表的IEnumerator<T>实现. 实际上,在.Net的底层(IL语言层面)而言, foreach (var

浅谈PHP中的数组和JS中的数组

最近在做前后端对接的时候,遇到一个问题,前端要求返回的数据格式是左边的,但是我通过json_encode返回到的数据格式是右边的   注意:数据格式从"[]"(数组)变成了"{}"(对象) google了下,发现:javascript不支持关联数组 , PHP中索引数组转换成json是数组([]),php关联数组转换成json是对象( {} ) ,所以如果是关联数组的话,需要对数组做一些处理才行 PHP中的数组:索引数组和关联数组 PHP支持两种数组,一种是只保存&

iOS开发-- 使用NSNumber将int、float、long等数据类型加入到数组或字典中

// 设置值 NSNumber *number=[NSNumber numberWithInt:45]; // 取值 NSLog(@"NSNumber %d",[number intValue]);

Java、C、C++中的数组的比较

数组是一个很常用的数据类型,在不同的语言中它既有相似点又有各个语言所特有的地方,下面是个人对于数组的一些理解: 相同点: 1.不管是在C/C++或是Java中,数组都是相同类型的数据集合,虽然在面向对象语言中,由于类之间的继承的关系,让一个数组中可能存有看似不同的数据类型,但是注意本质上它们都是继承自同一个类型即数组的类型的(例如:对于一个水果数组:数组中的值可能有苹果.香蕉.葡萄...但是它们都是继承自水果,即本质上还是同一个数据类型): 2.数组一旦初始化完成,在内存中的空间将被固定,数组长

Java基础---使用循环操作Java中的数组(三十一)

使用循环操作 Java 中的数组 实际开发中我们经常使用循环控制数组成员的操作.如:  运行结果:  其中,  用于获取数组的长度 需要注意的"小毛病": 1. 数组下标从 0 开始.因此 scores[3] ,表示数组中的第 4 个元素,而并非第 3 个元素 2. 数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错.如: 运行时会报如下错误: 上面错误信息的意思是数组下标超过范围,即数组访问越界.在上面的代码中创建一个长度为 2 的数组,因此数组下标范围是 0 到 1

Java中数组在内存中的图解

Java中的数组在内存中的图解,其实对于数组,还是比较熟悉的,平时用的也是很多的,在看数据结构与算法的极客时间专栏,最常用的10个数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie树,其中数组是最基础,也是学起来最简单的一种数据结构,数组是一种线性表数据结构.它用一组连续的内存空间,来存储一组具有相同类型的数据. 以下三张图片都是极客时间专栏中的,嘿嘿嘿!!! 数组是计算机分配的一组连续的内存空间 接下来,具体到Java语言,来说说数组吧:(这个是传智播客上的讲解图,这么好的

PHP 中创建数组的方法(私人收藏)

在 PHP 中创建数组在 PHP 中,array() 函数用于创建数组:array();在 PHP 中,有三种类型的数组:数值数组 - 带有数字 ID 键的数组关联数组 - 带有指定的键的数组,每个键关联一个值多维数组 - 包含一个或多个数组的数组 PHP 数值数组这里有两种创建数值数组的方法:自动分配 ID 键(ID 键总是从 0 开始):$cars=array("Volvo","BMW","Toyota");人工分配 ID 键:$cars[0