網(wǎng)絡(luò)理解##
1.因?yàn)榫W(wǎng)絡(luò)是需要考慮超時(shí)時(shí)長(zhǎng)的,是耗時(shí)操作,所有需要用線程處理.
-
NSURL *url = [NSURL urlWithString:@"https://baidu.com"];//通過(guò)一個(gè)標(biāo)識(shí)符標(biāo)識(shí)網(wǎng)絡(luò)
NSURLRequest *request = [NSURLRequest requestWithURL:url];//創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求.//網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)一般用異步請(qǐng)求,加入主隊(duì)列,在主線程執(zhí)行.主線程一般用于UI更新.
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]completionHandler:^(NSURLResponse *_Nullable response,NSData *_Nullable data, NSError *_Nullable connectionError) {
//判斷是否連接錯(cuò)誤,最好打印一下,返回錯(cuò)誤原因.
if(connectionError){
NSLog(@"連接錯(cuò)誤%@",connectionError);
return;
}
//創(chuàng)建服務(wù)器響應(yīng)
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
//判斷狀態(tài)碼,狀態(tài)碼正確,才可以接受數(shù)據(jù)實(shí)體,因?yàn)榉?wù)器響應(yīng)會(huì)返回狀態(tài)碼和數(shù)據(jù)實(shí)體.
if(httpResponse.statuesCode == 200||httpResponse.statuesCode == 304) {
//JSON是一種特殊的字符串.可能是字典,可能是數(shù)組
//解析數(shù)據(jù)JSON形式的字符串轉(zhuǎn)換成OC對(duì)象.
//這里用蘋(píng)果自帶的JSON解析,高效.
NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10]; //capacity:容納量.
//反向遍歷--降序遍歷
[array enumerateObjectsUsingBlock:^(id _Nonnull obj,NSUInteger idx,BOOL *_Nonnull stop){
QYNews *news = [QYNews newsWithDict:obj];
[mArray addObject:news];
}];
<font color=green>//Block遍歷優(yōu)點(diǎn):
1)遍歷可以從block中直接獲取需要的所有信息,包括下標(biāo),值等.特別是字典,不需要多余代碼就可以獲得key,value的值.
2)能夠直接修改block中key或者obj的類(lèi)型為真實(shí)類(lèi)型,可以省去類(lèi)型轉(zhuǎn)換的工作.
3)可以通過(guò)NSEnumerationConcurrent枚舉值開(kāi)啟并發(fā)迭代功能.</font>