想要实现异步获取的话我这边了解过来有两个非常简单的方式
一个是利用ASIHTTPRequest来实现异步获取数据
另一个则是利用MBProgressHUD来实现异步获取数据
本章就先来讲解如何利用ASIHTTPRequest类来实现异步数据获取
首先大家需要百度一下ASIHTTPRequest 然后看一下百度里搜到的那些文章(不要问具体是那篇,因为我发现百度搜过来的东西全部都是一样的,所以。。。。大致看下 哪篇都一样的就知道我说的是哪篇了,这也是为什么我决定自己写点内容的原因。再次吐槽百度个坑爹的家伙。)
看完了的话就接着看我们的内容吧
需要添加的类库
CFNetwork.framework ,SystemConfiguration.framework, MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib
我就直接上代码了我这边使用的是ASIFormDataRequest,使用前需要引用头文件 ASIFormDataRequest.h
我这边在GetWebInfo类里面定义了一个nsstring 类型的mywebaddress属性用来存放地址,这样的话可以便于我们管理地址
#pragma mark #pragma 异步加载数据 //初始化数据 异步加载 -(void)initListData{ // NSURL *url=[NSURL URLWithString:@"http://xxx.xxx.xxx.xxx/WebServicesForIOS/IOSWebservices.ashx?Method=GetNewsbyPage&type=公共新闻&rows=4&page=1"]; GetWebInfo *getwebinfo=[[GetWebInfo alloc] init]; NSURL *url=[NSURL URLWithString:getwebinfo.mywebaddress]; ASIFormDataRequest *request=[ASIFormDataRequest requestWithURL:url]; NSString *mypage=[NSString stringWithFormat:@"%d",_page ]; [request addPostValue:@"GetNewsbyPage" forKey:@"Method"]; [request addPostValue:@"公共新闻" forKey:@"type"]; [request addPostValue:@"4" forKey:@"rows"]; [request addPostValue:mypage forKey:@"page"]; [request setDelegate:self]; [request startAsynchronous]; } //异步加载成功 - (void)requestFinished:(ASIHTTPRequest *)request { NSData *responseData = [request responseData]; NSArray *keys = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil]; allcount=[[keys valueForKey:@"total"] integerValue]; [self.list addObject:[keys valueForKey:@"rows"]]; [_tableView reloadData]; } //异步加载失败 - (void)requestFailed:(ASIHTTPRequest *)request { // NSError *error = [request error]; UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"提示信息!" message:@"加载数据失败!网络连接失败!" delegate:Nil cancelButtonTitle:@"确定" otherButtonTitles: nil]; [alert show]; }
代码就是这么简单,一个是异步获取失败方法,一个是异步获取成功方法。。。。
然后就没有然后了。。。。就是这么的简单。
OK本章内容非常少,但是。。。却会很使用,然后。。真的就是这么简单。。
下一章会介绍如何利用 MBProgressHUD 进行异步获取数据。。那个。。更加的简单。