Objective-C中把URL请求的参数转换为字典
? ? ? ? 上一篇博客中是把URL轉換為字典,那么我們如何把URL請求中的參數封裝成字典,然后再封裝成數組呢?對OC中字符串操作熟練的小伙伴們應該覺得這是一個a+b的問題,沒錯把URL中的參數轉換為字典主要是對字符串的截取,關鍵是怎么個截法,才能把字符串中的參數列表分別轉換成鍵值對。下面是小菜自己的轉換思路,如果有更好的結局方法還請批評指正,相互學習交流一下,轉載請注明出處。
????????首先我們得會一個字符串拆分函數?componentsSeparatedByString:@"&",把字符串按照&進行拆分,然后返回字符串數組
??????????輸入的數據的格式如下(裝有url的字符串數組):
| 1 2 3 4 5 | ( ????"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.把字典存入數組
| 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 36 37 38 39 40 41 42 43 44 45 | 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; } |
?
??????????上面代碼具體的執行步驟:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 2014-08-12 13:46:14.126 HelloOC[1195:303] 第1個URL的處理過程:http://www.baidu.com?a=10&b=20 2014-08-12 13:46:14.126 HelloOC[1195:303] 參數列表開始的位置:20 2014-08-12 13:46:14.126 HelloOC[1195:303] 截取的參數列表:a=10&b=20 2014-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; } |
?
轉載于:https://www.cnblogs.com/ludashi/p/3907125.html
總結
以上是生活随笔為你收集整理的Objective-C中把URL请求的参数转换为字典的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [原创]Android Monkey测试
- 下一篇: 九大排序算法,你会几个?