专栏首页青玉伏案Objective-C中把数组中字典中的数据转换成URL

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" )

    ​    ​    ​那么我们应如和把转换后的结再逆向成原来得数据格式呢?下面的博客中会提到相应的方法,谢谢朋友们的支持,不足之处还望批评指正。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式(五): 简单而又不失其重要性的单例模式(Singleton Pattern)

    上篇博客我们系统的介绍了三种工厂模式,今天我们就来介绍一下单例模式。单例模式虽然简单,但是还是比较重要的,是常用设计模式之一。在之前的博客《Objective-...

    lizelu
  • 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)

    温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结。数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下。当然数据结构相关博客中我...

    lizelu
  • Objective-C中的单例模式

        ​    ​单例模式算是设计模式中比较简单的一种吧,设计模式不是只针对某种编程语言,在C++, Java, PHP等其他OOP语言也有设计模式,笔者初接...

    lizelu
  • 微服务架构之服务冶理Dubbo-服务引用

    注:公众号关于dubbo解读文章均基于apache-dubbo-incubating-2.7.1版本,发版于5月26号,此版本注册中心(多数是zookeeper...

    公众号_松华说
  • 【PHP】第三方登录OAuth2.0

    对于网站应用程序,涉及到登录和第三方 api 接口时,都会接触到 Token 等概念,而这部分的逻辑原理则是来自于 OAuth 授权协议, 目前的 OAuth...

    程序小工
  • python合并ts视频

    合并后视频出现卡顿、加速播放等问题,解决方法不知,如果有知道怎么解决的朋友,欢迎联系,不胜感激。

    py3study
  • Android开发实现保存图片到手机相册功能

    本文实例讲述了Android开发实现保存图片到手机相册功能。分享给大家供大家参考,具体如下:

    砸漏
  • (数据科学学习手札74)基于geopandas的空间数据分析——数据结构篇

    geopandas是建立在GEOS、GDAL、PROJ等开源地理空间计算相关框架之上的,类似pandas语法风格的空间数据分析Python库,其目标是尽可能地...

    Feffery
  • SpannableString 给TextView添加不同的显示样式

    TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助S...

    xiangzhihong
  • 你的APK安全吗?来WeTest免费测!

    ? 腾讯安全联合实验室就曾在《2018上半年互联网黑产研究报告》指出,移动端黑产规模宏大,恶意推广日均影响用户超过千万。 尤其在网络强相关的APP流行年代,当...

    WeTest质量开放平台团队

扫码关注云+社区

领取腾讯云代金券