想要实现异步获取的话我这边了解过来有两个非常简单的方式
一个是利用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:@"" 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 进行异步获取数据。。那个。。更加的简单。