iOS之网络数据下载和JSON解析
iOS之网络数据下载和JSON解析
简介
在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步下载显示。
涉及到的知识点;
1. NSURLconnection异步下载和封装
2.JSON格式和JSON格式解析
3. 数据显示和使用SDWebImage异步显示图片
内容
1.网络下载基础知识介绍
什么是网络应用?
网络应用就是在有网络的环境下才能正常使用的一些应用程序。
网络应用的程序结构
C/S结构
Client客户端: 展示数据, 与用户进行交流。
Server服务端: 为客户端提供数据, 提供服务。
界面开发的一般流程
1.你先需要知道自己做的界面是怎样的一个效果,然后你再看需要什么素材和网络接口。
2.利用NSURLConnection异步下载数据。
3.通过解析数据,建立数据模型model。
4.自行定义一个UITabBarViewCell来显示界面。
2.NSURLconnection的使用
在这里我们是封装了这个异步下载的方法
@interface ZXHttpRequest()<NSURLConnectionDataDelegate> { NSString *_url; SEL _action; NSURLConnection *_connection; id _target; } @implementation ZXHttpRequest -(void)requestWithUrl:(NSString *)url target:(id)target action:(SEL)action; { _url=url; _action=action; _target=target; _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 { [_target performSelector:_action withObject:self]; }
NSString同步下载数据
我们把它写在这个方法里面,数据的接口是爱限免的数据接口,同步下载我们是不能用的,因为如果你要下载的数据比较大的话就很容易陷进这个方法里面去出不来,我们的异步下载是在后台运行下载的,但同步下载却是下载完数据之后返回再跳出方法的。这是它们的不同点,也是同步下载的致命缺陷。
-(void)testNSStringDownloadData { NSString *urlString = @"http://iappfree.candou.com:8080/free/applications/limited?currency=rmb&page=1&category_id="; 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(@"下载失败"); } }
3.JSON格式说明和格式化工具
JSON格式最重要的就是要搞清楚它数据里面的嵌套关系,它解析的方法其实很简单,重点不在方法,就在嵌套关系,我们通过一个JASON的解析软件就可以清楚的看到它里面嵌套的数据结构了,推荐给大家。
这是解析的方法:
NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:(NSData *)options:(NSJSONReadingOptions) error:(NSError *__autoreleasing *)
4.一个完整界面的实现(包含Model创建)
效果图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。