ios网络下载类的简单封装---基于最新的AFNetWorkin
2016-01-12 本文已影响7626人
mark666
以前写过一期网络下载基于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/AFNetWoringTool.git