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