想要實現異步獲取的話我這邊了解過來有兩個非常簡單的方式
一個是利用ASIHTTPRequest來實現異步獲取數據
另一個則是利用MBProgressHUD來實現異步獲取數據
本章就先來講解如何利用ASIHTTPRequest類來實現異步數據獲取
首先大家需要百度一下ASIHTTPRequest 然後看一下百度裡搜到的那些文章(不要問具體是那篇,因為我發現百度搜過來的東西全部都是一樣的,所以。。。。大致看下 哪篇都一樣的就知道我說的是哪篇了,這也是為什麼我決定自己寫點內容的原因。再次吐槽百度個坑爹的家伙。)
看完了的話就接著看我們的內容吧
我就直接上代碼了我這邊使用的是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本章內容非常少,但是。。。卻會很使用,然後。。真的就是這麼簡單。。