ios之網路資料下載和JSON解析,ios資料json解析
ios之網路資料下載和JSON解析簡介
在本文中筆者將要給大家介紹ios中如何利用NSURLConnection從網路上下載資料以及如何解析下載下來的JSON的資料格式,以及如何顯示資料和圖片的非同步下載顯示
涉及到的知識應用:
1.NSURLConnection非同步下載和封裝
2.JSON格式和JSON格式解析
3.資料顯示和使用SDWebImage非同步顯示圖片
內容 1網路下載基礎知識介紹
什麼是網路應用?
一般情況下,iPhone上絕大多數的應用都需要網路才能運行,就是網路應用。
網路應用的程式結構
在網路上運行一個程式為應用提供資料, 或者提供服務, 那麼這個網路應用一般稱為用戶端, 而網路上啟動並執行服務稱為服務端。
常見的網路介面形式
iOS網路應用常見的資料介面一般都是HTTP形式的URL地址。
介面開發的一般流程
下載資料 NSURLConnection+URL
解析資料 JSON/XML
建立資料模型model
建立視圖 使用視圖顯示
tableView +定製cell
圖片非同步下載SDWeblmage
2NSURLConnection的使用
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]; } }
3JSON格式說明和格式化工具
JSON格式
{
"count":20,
"data":[
"zhangsan",
"lisi",
"wangwu"
]
}
[] 表示數組,對應NSArray
, 表示並列的資料
{} 表示字典,對應NSDictionary
: 表示索引值對
"xxx" 表示字串,對應NSString
20 對應NSNumber
4一個完成頁面的實現(包含model的建立,SDWebImage的使用)