Objective-C中把數組中字典中的資料轉換成URL

來源:互聯網
上載者:User

標籤:style   http   color   java   os   io   資料   for   

        可能上面的標題有些拗口,學過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的宏定義:

12345 //定義字典鍵#define A @"a"#define B @"b"#define C @"c"#define D @"d"

    ?    ?    ?添加測試資料

1234567891011121314151617181920212223 //容納字串拼接後的字串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,轉換的具體過程如下

1234567891011121314151617181920212223242526272829303132333435 //從數組中取出字典,把每個然後拼接成urlfor (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的數組

    ?    ?    ?最終轉換結果為:

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.