AJ学IOS 之微博项目实战(8)用AFNetworking和SDWebImage简单加载微博数据

AJ分享,必须精品

 

一:效果

没有图文混排,也没有复杂的UI,仅仅是简单的显示出微博数据,主要介绍AFNetworking和SDWebImage的简单用法

这里写图片描述

二:加载数据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;
}
posted @ 2015-08-04 13:03  developAJ  阅读(149)  评论(0编辑  收藏  举报