Model类与ImageDownLoader

哈喽 我又来了 咱们继续上一个话题 – 用ImageDownLoader去请求网络图片

ImageDownLoader的类封装好了 咱们离成功还有…..额…..一半 = = !

不过没关系 逻辑清晰明了!


好了 让我们进入主题:

在请求下来的文字JSON 文件中 会存在一段图片网址字符串 它告诉我们 要得到图片 就要用这段字符串去网络上请求

JSON文件里的数据通常是用Model的属性去保存的 当然也会保存这段网址字符串啦 我们假设这个属性名叫image

现今我们要将Model的数据展现在TableView上 那么需要很多个对应于cell的Model 这些Model都需要通过ImageDownLoader类去获取图片data 我们可以将ImageDownLoader初始化在cell的创建方法中 然后在controller类中实现协议方法 设置个属性去接收数据 然后给cell的imageView.image赋值 不过这样做不符合封装性 我们可以将这一切都封装在model中

现在 model类中除了之前的一些属性外 还需要设置一个UIImage类的属性 用以接收data

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "ImageDownLoader.h"
@interface ActivityModel : NSObject

// 用于接收data(data可以直接转化为Image) 
@property (nonatomic, retain) UIImage *coverImage;

// 这个属性是用于解决复用问题的 作用是记录model的请求图片状态
@property (nonatomic, assign) BOOL isDownLoading;

// model 通过此方法用 网址字符串 去请求图片data 并赋给coverImage;
- (void)downLoadImage;

@end
// model 的方法实现
- (void)downLoadImage;
{
    // 将ImageDownLoader初始化方法封装在此 
    // 当model调用downLoadImage方法时 那么就可以把model的图片网址字符串传到此处进行请求了
    // 当然 ImageDownLoaderDelegate协议的代理就设置成model了
    self.imageDownLoader = [[ImageDownLoader alloc] initWithUrl:self.image delegate:self];

    // 开始请求
    [self.imageDownLoader start];

    // 将请求状态标记为YES
    self.isDownLoading = YES;

    // 释放
    [_imageDownLoader release];


}

// ImageDownLoaderDelegate的协议方法
- (void)imageDownLoadFailedWithError:(NSError *)error
{
    NSLog(@"%@",error);
    // 请求失败了 那么也就不在请求了
    self.isDownLoading = NO;

}

// 一旦链接已经完成加载(data已经接收完全) 就触发这个方法 -- 将data通过协议方法传过来
- (void)imageDownLoadSucceedWithData:(NSData *)data
{
    // 用这个data给coverImage 赋值
    self.coverImage = [UIImage imageWithData:data];

    // 请求成功了 当然也就不在请求了
    self.isDownLoading = NO;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值