在本文中筆者將要給大家介紹ios中如何利用NSURLConnection從網絡上下載數據以及如何解析下載下來的JSON的數據格式,以及如何顯示數據和圖片的異步下載顯示
涉及到的知識應用:
1.NSURLConnection異步下載和封裝
2.JSON格式和JSON格式解析
3.數據顯示和使用SDWebImage異步顯示圖片
什么是網絡應用?
一般情況下,iphone上絕大多數的應用都需要網絡才能運行,就是網絡應用。
網絡應用的程序結構
在網絡上運行一個程序為應用提供數據, 或者提供服務, 那么這個網絡應用一般稱為客戶端, 而網絡上運行的服務稱為服務端。
常見的網絡接口形式
iOS網絡應用常見的數據接口一般都是HTTP形式的URL地址。
界面開發的一般流程
下載數據 NSURLConnection+URL
解析數據 JSON/xml
建立數據模型model
創建視圖 使用視圖顯示
tableView +定制cell
圖片異步下載SDWeblmage
NSString同步下載數據
NSError *error = nil; NSURL *url = [NSURL URLWithString:urlString]; NSString *content = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; if (error==nil) { NSLog(@"content = %@",content); } else { NSLog(@"下載失敗"); }
NSURLConnection 同步下載
NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; NSError *error = nil; NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; if(error == nil) { NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"str = %@",str); } else { NSLog(@"下載失敗"); }
NSURLConnection 異步下載
@PRoperty (copy,nonatomic) NSMutableData *data;//作用:// 傳入網址, 下載完成執行后執行target對象中action方法-(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action;@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]; } }
JSON格式
{
"count":20,
"data":[
"zhangsan",
"lisi",
"wangwu"
]
}
[] 表示數組,對應NSArray
, 表示并列的數據
{} 表示字典,對應NSDictionary
: 表示鍵值對
"xxx" 表示字符串,對應NSString
20 對應NSNumber
新聞熱點
疑難解答