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 的实现方法,如果大家看后赶脚还比较虚的话,建议根据上面的介绍,自己动手实现下。
相关文章:《12套swift学习资源分享》
OC中如何把数组中字典的数据转换成URL?的更多相关文章
- PHP中如何在数组中随机抽取n个数据的值 - array_rand()?
PHP中如何在数组中随机抽取n个数据的值? 最佳答案 array_rand() 在你想从数组中取出一个或多个随机的单元时相当有用.它接受 input 作为输入数组和一个可选的参数 num_req,指明 ...
- 4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。 (2)把数组中的数字放到当前文件夹的numArr.txt文件中
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLis ...
- Objective-C中把数组中字典中的数据转换成URL
可能上面的标题有些拗口,学过PHP的小伙伴们都知道,PHP中的数组的下标是允许我们自定义的,PHP中的数组确切的说就是键值对.而在OC我们要用字典(Dictionary)来存储,当然了Java用的是M ...
- C#中判断一个数组中是否存在某个数组值 及相关
声明:reference:http://www.cnblogs.com/icebutterfly/archive/2010/06/22/1762738.html:http://blog.csdn.ne ...
- js中关于一个数组中最大、最小值以及它们的下标的输出的一种解决办法
今天在学习js中的数组时,遇到的输出一个数组中最大.最小值以及它们的下表,以下是自己的解决方法! <script type="text/javascript"> var ...
- C#中如何向数组中动态添加元素
转自:https://blog.csdn.net/qq_35938548/article/details/78325558 背景:现需要向数组中循环插入字符串,但C#中的数组是不支持动态添加元素的,只 ...
- Js中的字符串/数组中常用的操作
JS为每种数据类型都内置很多方法,真的不好记忆,而且有些还容易记混,现整理如下,以便以后查看: 一.String ①charAt()方法用于返回指定索引处的字符.返回的字符是长度为 1 的字符串. 语 ...
- java中list或数组中随机子集工具类
package com.example.demo.test; import java.util.ArrayList;import java.util.Arrays;import java.util.L ...
- C语言:对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中。-在数组中找出最小值,并与第一个元素交换位置。
//对传入sp的字符进行统计,三组两个相连字母“ea”"ou""iu"出现的次数,并将统计结果存入ct所指的数组中. #include <stdio.h& ...
随机推荐
- FreeBSD_11-系统管理——{Part_6 - SYSCTL}
sysctl 常见参数 Name Type Changeable 示例 & 示意 kern.ostype string no FreeBSD kern.osrelease string no ...
- StringGrid 实例2:1、获取 StringGrid 的行数、列数; 2、给单元赋值.
实例2: 本例功能: 1.获取 StringGrid 的行数.列数; 2.给单元赋值. 运行效果图:
- 张小龙《微信背后的产品观》之PPT完整文字版
微信回顾 433天,一亿用户 成为移动互联网的新入口 启动(2010年11月19日) 用户数突破1亿 1.0 1月26日 2.0 5月10日 语音对讲 2.5 8月3日 查看那附近的人 3.0 10月 ...
- DBAPI部署
1.添加源 sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm ...
- Spring的定时任务配置2(转)
spring的定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 1.定义任务 <!--要定时执行的方法--> <bean id="testTas ...
- Subsets 子集系列问题 leetcode
子集系列问题: Coding 问题中有时会出现这样的问题:给定一个集合,求出这个集合所有的子集(所谓子集,就是包含原集合中的一部分元素的集合). 或者求出满足一定要求的子集,比如子集中元素总和为定值, ...
- 什么是领域驱动设计(Domain Driven Design)?
本文是从 What is Domain Driven Design? 这篇文章翻译而来. ”…在很多领域,专家的作用体现在他们的专业知识上而不是智力上.“ -- Don Reinertsen 领域驱动 ...
- mfc 在VC的两个对话框类中传递参数的三种方法
弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMD ...
- window环境下glog的安装
window环境下glog的安装 分类: c++2014-09-23 14:12 32人阅读 评论(0) 收藏 举报 下载后解压,利用Visual Studio打开google-glog.sln.生成 ...
- 使用lock和condition实现的阻塞队列-字符串
在jdk 的API中提供了一个字符串的阻塞队列 : class BoundedBuffer { final Lock lock = new ReentrantLock(); final Conditi ...