天天看點

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"

    ​    ​    ​添加測試資料

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,轉換的具體過程如下

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的數組

    ​    ​    ​最終轉換結果為:

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"

)

    ​    ​    ​那麼我們應如和把轉換後的結再逆向成原來得資料格式呢?下面的部落格中會提到相應的方法,謝謝朋友們的支援,不足之處還望批評指正。

作者:青玉伏案

出處:http://www.cnblogs.com/ludashi/

本文版權歸作者和共部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。

收履歷:某網際網路公司,招聘iOS/Android靠譜工程師,入職後,可内部聯系樓主,有小禮品贈送,有意者可郵箱投遞履歷:[email protected]