ios網絡下載類的簡單封裝

jopen 8年前發布 | 12K 次閱讀 iOS開發 移動開發

以前寫過一期網絡下載基于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/AFNetWorkingTool

 

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