ios网络下载类的简单封装---基于最新的AFNetWorking3.0

以前写过一期网络下载基于AFNetWorking2.0下载类的封装,大致的思路很简单:主要是写一个网络业务处理的类,负责网络数据的下载和模型的转换,模型转换利用的是MJExtension,在viewcontroller中导入网络下载类即可。这是我写这么多网络数据请求,觉得最容易,代码量较少就可以实现任何网络数据的下载,当然这个类可以扩充,可以进行数据上传等等,因为每个人 的项目需求不同,这个每个人根据自己的实际情况处理即可。
这次重构的主要原因是因为AFNetWorking已经升级到3.0,原来基于NSURLConnection的已经废弃掉,改用NSURLSession,关于AFNetWorking具体的变化大家可以参照github上的描述,或者上 暮落晨曦 的大致翻译,链接如下:

github

https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-3.0-Migration-Guide#new-requirements-ios-7-mac-os-x-109-watchos-2-tvos-9--xcode-7

暮落晨曦中文翻译版本

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

你可能感兴趣的:(ios网络下载类的简单封装---基于最新的AFNetWorking3.0)