Objective-C中把URL請求的參數轉換為字典

來源:互聯網
上載者:User

標籤:key   .com   如何   rate   get   plain   列表   table   ble   

  上一篇部落格中是把URL轉換為字典,那麼我們如何把URL請求中的參數封裝成字典,然後再封裝成數組呢?對OC中字串操作熟練的小夥伴們應該覺得這是一個a+b的問題,沒錯把URL中的參數轉換為字典主要是對字串的截取,關鍵是怎麼個截法,才能把字串中的參數列表分別轉換成索引值對。下面是小菜自己的轉換思路,如果有更好的結局方法還請批評指正,相互學習交流一下,轉載請註明出處。

        首先我們得會一個字串拆分函數 componentsSeparatedByString:@"&",把字串按照&進行拆分,然後返回字串數組

    ?    ?輸入的資料的格式如下(裝有url的字串數組):

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

    ?    ?接下來就是要把每個url中的參數列錶轉換成字典,主要代碼如下:

    ?    ?    ?代碼說明:

    ?    ?    ?    ?1.先把參數列表在url中的參數列表的起始位置擷取到,通過方法rangeOfString方法擷取

    ?    ?    ?    ?2.位置擷取到以後我們可以把參數列表從url字串中提取出來,通過substringFromIndex來擷取。

    ?    ?    ?    ?3.通過componentsSeparatedByString把參數列表進行每項的拆分

    ?    ?    ?    ?4.通過componentsSeparatedByString把每項進行索引值對的拆分

    ?    ?    ?    ?5.把索引值對存入字典

    ?    ?    ?    ?5.把字典存入數組

123456789101112131415161718192021222324252627282930313233343536373839404142434445 NSMutableArray * dataArray(){    //用來作為函數的傳回值,數組裡裡面可以存放每個url轉換的字典    NSMutableArray *arrayData = [NSMutableArray arrayWithCapacity:4];         //擷取數組,數組裡裝得是url    NSMutableArray *arrayURL = appendURL();    NSLog(@"擷取到得URL數組如下:\n%@", arrayURL);         //迴圈對數組中的每個url進行處理,把參數轉換為字典    for (int i = 0; i < arrayURL.count; i ++)    {        NSLog(@"第%d個URL的處理過程:%@", i+1, arrayURL[i]);                 //擷取問號的位置,問號後是參數列表        NSRange range = [arrayURL[i] rangeOfString:@"?"];        NSLog(@"參數列表開始的位置:%d", (int)range.location);                 //擷取參數列表        NSString *propertys = [arrayURL[i] substringFromIndex:(int)(range.location+1)];        NSLog(@"截取的參數列表:%@", propertys);                 //進行字串的拆分,通過&來拆分,把每個參數分開        NSArray *subArray = [propertys componentsSeparatedByString:@"&"];        NSLog(@"把每個參數列表進行拆分,返回為數組:\n%@", subArray);                 //把subArray轉換為字典        //tempDic中存放一個URL中轉換的索引值對        NSMutableDictionary *tempDic = [NSMutableDictionary dictionaryWithCapacity:4];                 for (int j = 0 ; j < subArray.count; j++)        {            //在通過=拆分鍵和值            NSArray *dicArray = [subArray[j] componentsSeparatedByString:@"="];            NSLog(@"再把每個參數通過=號進行拆分:\n%@", dicArray);            //給字典加入元素            [tempDic setObject:dicArray[1] forKey:dicArray[0]];        }        NSLog(@"列印參數列表產生的字典:\n%@", tempDic);        [arrayData addObject:tempDic];    }    NSLog(@"列印參數字典產生的數組:\n%@", arrayData);         return arrayData;}

 

    ?    ?上面代碼具體的執行步驟:

1234567891011121314151617181920212223 2014-08-12 13:46:14.126 HelloOC[1195:303] 第1個URL的處理過程:http://www.baidu.com?a=10&b=202014-08-12 13:46:14.126 HelloOC[1195:303] 參數列表開始的位置:202014-08-12 13:46:14.126 HelloOC[1195:303] 截取的參數列表:a=10&b=202014-08-12 13:46:14.127 HelloOC[1195:303] 把每個參數列表進行拆分,返回為數組:(    "a=10",    "b=20")2014-08-12 13:46:14.127 HelloOC[1195:303] 再把每個參數通過=號進行拆分:(    a,    10)2014-08-12 13:46:14.127 HelloOC[1195:303] 再把每個參數通過=號進行拆分:(    b,    20)2014-08-12 13:46:14.128 HelloOC[1195:303] 列印參數列表產生的字典:{    a = 10;    b = 20;}

Objective-C中把URL請求的參數轉換為字典

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.