(8)用AFNetworking和SDWebImage简单加载微博数据
最后更新于:2022-04-01 07:27:09
## 一:效果
没有图文混排,也没有复杂的UI,仅仅是简单的显示出微博数据,主要介绍AFNetworking和SDWebImage的简单用法
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-20_569f1d992ef9e.jpg)
## 二:加载数据AFNetworking
### AFNetworking用法
AFNetworking的用法大体有三步:
一:下载第三方框架(githup也好,百度也好,多的是)
二:导入头文件 `#import "AFNetworking.h"`
三:开始写代码(以上两步所有的第三方框架都通用)
1,请求管理者
~~~
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
~~~
2,拼接请求参数
~~~
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"*****"] = @"*****";
params[@"*****"] = @"*****";
params[@"*****"] = @"*****";
。。。。
///可以写很多参数
~~~
3,发送请求
~~~
[mgr GET:@"https:请求的网址" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
//这里写请求成功用的代码
NSLog(@"请求成功 --- %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//这里写请求失败用的代码
NSLog(@"请求失败 --- %@",error);
}];
~~~
下面贴出微博项目中的代码
### 加载最新的微博数据
~~~
/**
* //加载最新的微博数据
*
*
*/
-(void)loadNewStatus
{
//1,请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
//2,拼接请求参数
NSMutableDictionary *params = [NSMutableDictionary dictionary];
HWAccount *account = [HWAccountTool account];
params[@"access_token"] = account.access_token;
// params[@"count"] = @20;
//3,发送请求
[mgr GET:@"https://api.weibo.com/2/statuses/friends_timeline.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
HWLog(@"请求成功 --- %@", responseObject);
//取得微博数组
self.statuses = responseObject[@"statuses"];
//刷新表格
[self.tableView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
HWLog(@"请求失败 --- %@",error);
}];
}
~~~
## 三:SDWebImage用法
SDWebImage的用法大体有三步:
一:下载第三方框架(githup也好,百度也好,多的是)
二:导入头文件 `#import "UIImageView+WebCache.h" (这里面很多头文件,看自己具体需要那种了)`
三:开始写代码(以上两步所有的第三方框架都通用)
这个代码写起来就更简单了,例如微博中我们想要让他自己下载缓存一张图片用作每个tableViewCell的图片,并且显示一张占位图片,一句代码就搞定了
~~~
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:placehoder];
~~~
然后需要做防止程序内存溢出的操作
一:在程序AppDelegate 中写入头文件`#import "SDWebImageManager.h"`
二:调用方法,在整个程序内存警报时候调用`-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
`
三:方法内写入
~~~
//整个程序内存警报时候调用
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
SDWebImageManager *mgr = [SDWebImageManager sharedManager];
//1,取消下载
[mgr cancelAll];
//2,清除内存中的所有图片
[mgr.imageCache clearMemory];
}
~~~
这里贴出cell全部代码供参考
~~~
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ID = @"status";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
}
//用indexPathRow取出对应的一条微博字典
NSDictionary *status = self.statuses[indexPath.row];
//设置微博作者
NSDictionary *user = status[@"user"];
cell.textLabel.text = user[@"name"];
//设置微博内容
cell.detailTextLabel.text = status[@"text"];
//设置微博头像
NSString *imageUrl = user[@"profile_image_url"];
//占位图
UIImage *placehoder = [UIImage imageNamed:@"avatar_default_small"];
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:placehoder];
return cell;
}
~~~