美文网首页
如何将controller瘦身?

如何将controller瘦身?

作者: Mossion | 来源:发表于2016-03-19 17:47 被阅读61次

          前阵子,看到了一篇关于将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瘦身?

          本文链接:https://www.haomeiwen.com/subject/ezrqkttx.html