ios学习(从网络上获取数据)

从网络上获取数据:

1.从网络上获取数据,采用如下这种方式会带来主线成阻塞现象,主线成主要是负责的是ui的交互(用户输入指令或数据,系统给一个反馈)

会进一步让ui停止交互

1)首先给我们将要下载的图片设置好位置

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@“地址”]]];

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 100, 80)];

imageView.image = image;

2).加载到view

self.view addSubview:imageView];

网络下载的几个步骤

    1.开始请求

    2.实现代理方法对数据进行初始化

    3.开始接受数据

    4.对接受的数据进行处理

    5.在接受失败时候对数据的处理

2.我们应该采用这种方式来进行对网络数据的请求,网络异步加载

1).异步加载要遵循一个代理NSURLConnectionDataDelegate

2).定义的全局变量的一个初始化,用来存放数据

 _data = [[NSMutableData alloc]init];

NSURL *url = [NSURL URLWithString:string];

3).像网络发送一个请求,请求数据

NSURLRequest *req = [NSURLRequest requestWithURL:url];

4).进行对网络进行请求的一个类,专门来做网络连接的一个类

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:NO];

5).开始请求

[conn start];

6).实现代理方法,开始接收数据,对数据进行初始化,每次下载都初始化为0,确保接着下载时里面的长度设为0.清空原始的内容

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{


    _data.length = 0;

}

7).开始接收拼接数据,也就是追加数据。类似于我们之前的追加字符串的做法

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{    

    [_data appendData:data];


}

8).对下载完成的数据进行处理

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{

    UIImage *image = [UIImage imageWithData:_data];

    UIImageView *vie = [[UIImageView alloc]initWithFrame:CGRectMake(50, 100, 150, 100)];

    vie.image = image;

    [self.view addSubview:vie];


}

9).出错处理,这里的出错处理有数据的出错,以及网络地址的出错

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{

    NSLog(@"错误");

}

3.采用第三方库的一种方式请求网络数据

步骤,1).倒入第三方库,

     2).将库中.m文件结尾的加一个-info-objc-arc,解决arc问题(当然前提是你考虑arc情况的库,如果不是则不需要)

这样省很多代码


你可能感兴趣的:(ios学习(从网络上获取数据))