如何將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約束,動態返回高度。緩存高度。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容