zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    jQuery常用操作
    SharePoint2007深入浅出——使用jQuery UI
    深入浅出SharePoint——常用的url命令
    MySQL实战
    Emacs助力PowerShell
    电商平台实战——准备篇
    深入浅出SharePoint2012——安装Report Service
    (转).net面试题(老赵)
    (转)在.NET程序运行过程中,什么是堆,什么是栈?什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?
    (转)类(class)和结构(struct)的区别是什么?它们对性能有影响吗?.NET BCL里有哪些是类(结构),为什么它们不是结构(类)?在自定义类型时,您如何选择是类还是结构?
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990300.html
Copyright © 2011-2022 走看看