博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C中把数组中字典中的数据转换成URL
阅读量:7102 次
发布时间:2019-06-28

本文共 2227 字,大约阅读时间需要 7 分钟。

        可能上面的标题有些拗口,学过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"
)

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

你可能感兴趣的文章
Android自定义View的实现 (重要的内容)
查看>>
Redis被bgsave和bgrewriteaof阻塞的解决方法
查看>>
Boost::filesystem 使用小笔记
查看>>
java毕业设计自学入门教程
查看>>
为什么传统的婚姻和家庭会消解?
查看>>
Linode使用记录
查看>>
使用jconsole和jvisualvm检测jvm性能
查看>>
JAVA语言泛型编程实现单例模式
查看>>
magento中csv文件表格制作容易出现的问题
查看>>
python文件读取并使用mysql批量插入
查看>>
python
查看>>
HTTPS SSL免费证书生成
查看>>
Linux下卸载和安装MySQL[rpm包]
查看>>
Xcode 自带git 使用,忽略用户数据
查看>>
title: Spring Security源码分析七:Spring Security 记住我
查看>>
【原创】图解 hotwheels
查看>>
Git提交与更新
查看>>
自定义类实现基于数组/字典Literal Syntax设置和获取数据
查看>>
iOS开发22:SandBox的结构
查看>>
java之反射构造方法
查看>>