標籤: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請求的參數轉換為字典