ios网络下载类的简单封装
jopen
9年前
以前写过一期网络下载基于AFNetWorking2.0
下载类的封装,大致的思路很简单:主要是写一个网络业务处理的类,负责网络数据的下载和模型的转换,模型转换利用的是MJExtension
,在viewcontroller
中导入网络下载类即可。这是我写这么多网络数据请求,觉得最容易,代码量较少就可以实现任何网络数据的下载,当然这个类可以扩充,可以进行数据上传等等,因为每个人 的项目需求不同,这个每个人根据自己的实际情况处理即可。
这次重构的主要原因是因为AFNetWorking
已经升级到3.0
,原来基于NSURLConnection
的已经废弃掉,改用NSURLSession
,关于AFNetWorking
具体的变化大家可以参照github上的描述,或者简书上 暮落晨曦 的大致翻译,链接如下:
github
暮落晨曦中文翻译版本
http://www.jianshu.com/p/047463a7ce9b
有兴趣的同学可以去仔细研究。
下面将贴出我的主要代码
//这个主要是导入HTTPRequestTool类 [HTTPRequestTool GET:DOWNLOADURL parameters:nil success:^(id responseObject) { NSMutableArray *dataArr = [HTTPRequestTool ModelTransformationWithResponseObject:responseObject modelClass:[model class]]; [self.dataArray addObjectsFromArray:dataArr]; [tableView reloadData]; } failure:^(NSError *error) { NSLog(@"%@",error); }];
这是方法的具体实现 + (void)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(id))sucess failure:(void (^)(NSError *))failure { AFHTTPSessionManager *manger = [AFHTTPSessionManager manager]; [manger GET:URLString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { //如果请求成功的话将responseObject保存在sucess Block中 if (sucess) { sucess(responseObject); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { if(failure) { failure(error); } }]; }
模型转换在前一期已经写过,大家可以具体去参考,再者我已经将代码的具体实现已经上传到github上,供有兴趣的同学参考。
https://github.com/markdashi/AFNetWorkingTool