如何将controller瘦身?

      前阵子,看到了一篇关于将controller瘦身的文章,很多同学则是一直都是将数据请求放在controller内,所以当项目越来越大时controller就会变得越来越臃肿,代码读起来简直是折磨人。废话不多说,直接上代码:

在model中.h文件: 创建一个block,代理也行,个人喜好。

#import

typedef void(^success)(NSArray *responseArray,NSError *error);

@interface jokerModel : NSObject

+ (void)loadData:(success)success;

@end

.m文件:

+ (void)loadData:(success)success{

[[Httptool shareManager] getHttpRequest:@"http://api.1-blog.com/biz/bizserver/xiaohua/list.do" paramters:nil success:^(id responseObject) {

NSMutableArray *arr = [NSMutableArray array];

NSArray *videoLists = [responseObject objectForKey:@"detail"];

for (NSDictionary *dict in videoLists) {

[arr addObject:[self dicToModel:dict]];

}

} failure:^(NSError *error) {

success(nil,error);

}];

}

// 字典转模型,必须是类方法(+)

+ (jokerModel *)dicToModel:(NSDictionary *)dic{

jokerModel *model = [[jokerModel alloc] init];

[model setValuesForKeysWithDictionary:dic];

return model;

}

// setValuesForKeysWithDictionary: 内部会调用下面这个方法

- (void)setValue:(id)value forKey:(NSString *)key{

// 调用父类方法  如果不调用父类方法,则setValuesForKeysWithDictionary:不起作用

[super setValue:value forKey:key];

}

- (void)setValue:(id)value forUndefinedKey:(NSString *)key{

}


最后,你在controller中就可以直接请求数据了:

- (void)loadData{

[jokerModel loadData:^(NSArray *responseArray, NSError *error) {

if (error != nil) {

return ;

}

dataArray = [NSArray arrayWithArray:responseArray];

[jokerTabelView reloadData];

}];

}



连接地址:GitHub - Mossion/Joker-master: controller瘦身,不再涉及到网络层。Masonry约束,动态返回高度。缓存高度。

你可能感兴趣的:(如何将controller瘦身?)