在本文中筆者將要給大家介紹iOS中如何利用NSURLConnection如何從網絡中下載數據,如何解析下載下來的JSON數據格式,以及如何顯示數據和圖片的異步下載顯示。
涉及到的知識點:
1.NSURLConnection異步下載和封裝
#import "ZJHttPRequest.h"//消除performSelector的警告#pragma clang diagnostic ignored "-Warc-performSelector-leaks"//類擴展//項目實踐:// 有些實例變量內部使用, 不想放在頭文件中, 放在這兒@interface ZJHttpRequest ()<NSURLConnectionDataDelegate>{ NSURLConnection *_connection; NSString *_url; id _target; SEL _action;}@end@implementation ZJHttpRequest//作用:// 傳入網址, 下載完成執行后執行target對象中action方法-(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action{ _url = url; _target = target; _action = action; //發起URL請求 _data = [[NSMutableData alloc] init]; _connection = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]] delegate:self startImmediately:YES];}-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ [_data appendData:data];}-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ //下載完成了, 執行保存的方法 if(_target && [_target respondsToSelector:_action]) { [_target performSelector:_action withObject:self]; } }@end
2.JSON格式和JSON格式解析
JSON格式:
{ //{}字典 ,[]數組 "list" : [ { "IsXuanZuo" : 0, "Name" : "“梁靜茹·你的名字是愛情”2015世界巡回演唱會天津站", "PriceStr" : "299,399,599,799,999", "ProjectID" : 78647, "ShowTime" : "2015.07.25", "SiteStatus" : 8, "Summary" : "4月7日13:00大麥APP搶先開啟先付預售!", "VenId" : 1403, "VenName" : "天津體育中心(大館)", "cityname" : "天津市", "openSum" : 5836, "priceName" : "299-999元" }, ...}
JSON最簡便的解析方法:
NSJSONSerialization
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:request.data options:NSJSONReadingMutableContainers error:nil];
3.數據顯示和使用SDWebImage異步顯示圖片
SDWebImage -- UIImageView+WebCache.h
需設置內存管理 --> Project --->Build Phases -->將所有SD文件設置Compiler Flags
C/S結構:Cilent客戶端
Server 服務端
JSON/xml
界面模板--> 數據資源--> 下載數據,解析-->設計界面,刷新
NSString同步,NSURLConnection同步 --> 同步下載界面會卡(一般不用)
NSURLConnection異步
MVC模式 -->M:model , V:view , C:controller
數據下載--> 解析 --> 提取數據于model中 --> 建立cell 設置數據
新聞熱點
疑難解答