ios網絡下載類的簡單封裝
以前寫過一期網絡下載基于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
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!