iOS开发(OC)——iOS原生API实现文件下载
来源:互联网 发布:caffe slice层 编辑:程序博客网 时间:2024/05/12 02:09
新建继承NSObject类Downloader
Downloader.h代码
#import <Foundation/Foundation.h>#import <UIKit/UIKit.h>//@class Downloader;typedef void(^Success)(NSMutableData *data,NSString *name);typedef void(^Failure)(NSError *error);@protocol ProGress <NSObject>-(void)postPro:(CGFloat)pro;//代理实现进度传递@end@interface Downloader : NSObject <NSURLConnectionDataDelegate>{ long long _length;//文件大小 NSMutableData *_datas; long long _currenLenght;//当前下载的文件大小}@property (nonatomic, assign) long long length;@property (nonatomic, strong) NSMutableData *datas;@property (nonatomic, copy) Success success;@property (nonatomic, copy) Failure failure;@property (nonatomic, strong) NSString *strURL;@property (nonatomic,strong)NSString *fileName;@property (nonatomic,assign)id<ProGress>proDelegate;- (void)asynchronousDownload:(NSString *)url failure:(Failure)failure;@end
Downloader.m代码
//// Downloader.m// QNNSEC//// Created by chenp on 16/5/25.// Copyright © 2016年 chenp. All rights reserved.//#import "Downloader.h"@implementation Downloader- (void)asynchronousDownload:(NSString *)strURL{ _currenLenght=0; self.strURL = strURL; NSURL *url = [NSURL URLWithString:[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10]; [NSURLConnection connectionWithRequest:request delegate:self];}- (void)asynchronousDownload:(NSString *)url failure:(Failure)failure{ self.failure = failure; [self asynchronousDownload:url];}- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ _length = response.expectedContentLength; _datas = [NSMutableData dataWithCapacity:_length]; self.fileName= [response suggestedFilename];}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ _currenLenght+=data.length; [self.datas appendData:data]; if (self.proDelegate && [self.proDelegate conformsToProtocol:@protocol(ProGress)]) { [self.proDelegate postPro:(CGFloat)_currenLenght/(CGFloat)_length]; }}- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ NSLog(@"--->> Downloader 下载完成"); self.success(self.datas,self.fileName);}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ self.failure(error);}@end
0 0
- iOS开发(OC)——iOS原生API实现文件下载
- iOS开发(OC)——二维码扫描(原生API,支持条形码)
- iOS开发(OC)——AFNetworking之文件下载
- iOS开发(OC)——AFNetworking之文件上传
- iOS开发(OC)——分段按钮的实现
- iOS开发(OC)——录音
- iOS开发(OC)——UIWindow
- iOS开发 使用NSURLConnection实现下载文件
- IOS开发之OC篇(6)——NSFileManager文件管理器
- IOS开发之OC篇(7)——NSFileHandle文件操作对象
- iOS 开发之网络——文件上传&文件下载
- iOS开发(OC)——手机号码,邮箱,网址等正则表达式的实现
- iOS原生API生成二维码(CIFilter)
- iOS开发网络篇—文件下载(五·下载功能的封装)
- iOS开发网络篇—文件下载(五·下载功能的封装)
- iOS开发(OC)——文字滚动效果
- iOS开发(OC)——FMDB数据库的使用
- iOS开发(OC)——日期选择器
- iOS沙盒机制
- shape形状资源&图片选择器&广播接受者(发送短信)&图片选择器
- mybatis-generator 代码自动生成工具
- Python 华理 教学周
- mybatis 自动生成代码
- iOS开发(OC)——iOS原生API实现文件下载
- golan的template包中的eq函数的用法
- TextView实现跑马灯效果
- Java趣味编程(二)
- c++第七次作业
- 求unsafe集合-indeed Tokyo
- 动态链接库使用说明
- Reverse Integer
- PAT乙级—1054. 求平均值 (20)-native